home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 25 / Cream of the Crop 25.iso / os2 / bbs102d.zip / bbs.doc < prev    next >
Text File  |  1997-03-29  |  96KB  |  2,250 lines

  1. 21 Mar 1997.  BBS ver 1.02d: A bulletin board system for the World Wide Web.
  2.  
  3. BBS, version 1.02d, is a freeware OS/2 bulletin board system for
  4. the World Wide Web (WWW).  It requires the freeware SRE-Filter WWW Server
  5. for OS/2; and the free, IBM EWS GoServe Internet Server.
  6.  
  7. You can obtain GoServe from http://www2.hursley.ibm.com/goserve/
  8. SRE-Filter, and the latest version of BBS, can be obtained from
  9. http://rpbcam.econ.ag.gov/srefilter (use the "download" and
  10. "miscellaneous" links).
  11.  
  12.  
  13.                              INTRODUCTION
  14.  
  15. BBS is designed to offer a rich array of features in a relatively simple
  16. to configure package.  Some of the more basic features include:
  17.  
  18. *  A flexible access control mechanism allows explicit controls on which
  19.    directories (file-areas) a user can peruse.
  20. *  Directory specific inclusion files (i.e.; FILES.BBS)  can be used to control
  21.    file and sub-directory display.
  22. *  Alternatively, directory specific headers, footers, "description files" and
  23.    "exclusion lists" can be used.
  24. *  Individual file descriptions can be displayed, along with file size and
  25.    creation date. If desired, you can suppress any of these fields.
  26. *  Optional "automatic descriptions" can be generated for  HTML, .ZIP,
  27.    and text files.
  28. *  .ZIP files can be "opened and displayed", with subsequent retrieval
  29.     of a specific file from within the .ZIP archive
  30. *  Netscape 2.01, and other HTML 3.2 compliant browsers, can upload
  31.    files to your bulletin board (with several forms of notification).
  32. *  Uploads and downloads can be recorded on a per user basis.
  33. *  Downloads can be disallowed if a user's "download to upload" ratio grows
  34.    too large.
  35. *  Multiple links per file (text-download, binary-download, and "mime
  36.    type" download can be specified.
  37. *  You can create a "latest submissions" index that spans multiple directories.
  38. *  You can create user specific upload and download directory (trees).
  39.  
  40. For a quick start, you should read the installation notes (section 1),
  41. and the "hints and suggestions" (section 1a).  
  42.  
  43.  
  44.                  **** IMPORTANT INSTALLATION NOTES ***
  45.  
  46. *  For BBS downloads to work, the following entries MUST be present in your
  47.    SRE-Filter "alias" file:
  48.        bbs/download/*  bbs?download=*
  49.        bbs/zipdownload/*  bbs?zipdownload=*
  50.    To add these entries, you can either run the SRE-Filter configurator
  51.    or edit ALIASES.IN in the /DATA subdirectory of the GoServe working
  52.    directory.
  53.  
  54.    Note: by default, SRE-Filter is installed with these entries. So don't be
  55.          alarmed if they are already there!
  56.  
  57. *  Make sure that a copy of UNZIPAPI.DLL is either in your GoServe working
  58.    directory, or in you LIBPATH (say, in C:\os2\dll).
  59.         Since SRE-Filter comes with a copy of UNZIPAPI.DLL, you will
  60.         probably find a copy of UNZIPAPI.DLL in the GoServe working directory.
  61.    If for some odd reason you do not have a copy, you can download it from:
  62.         http://rpbcam.econ.ag.gov/srefilter/unzipapi.dll.
  63.    Note: UNZIPAPI.DLL is courtesy of the Info-Zip project:
  64.          http://quest.jpl.nasa.gov/Info-ZIP/
  65.          ftp://ftp.uu.net/pub/archiving/zip/ .
  66.  
  67. *  BBS uploads may require tweaking GoServe (see section V).
  68.  
  69. ==================================================
  70. Table of Contents:
  71.  
  72.    I)  Installation Instructions
  73.   1a)  Hints and suggestions
  74.   II)  Choosing Authentication Mode or User Mode
  75.  IIa)  Using INCLUSION_MODE_FILE for refined control
  76.  IIb)  Using BBSRECNT.CMD to display recent submissions
  77.  III)  The User Log Files.
  78.   IV)  Controlling access to selected directories.
  79.    V)  Notes on file uploads, and a note on configuring GoServe
  80.   VI)  Determining the user's required download/upload ratio.
  81.  VII)  BBS and Caching
  82. VIII)  Descriptions of request-string options to BBS.
  83.   IX)  Description of BBS initialization parameters
  84.    X)  Creating use statistics
  85.   XI)  Notes on the BBS caching daemon.
  86.  XII)  Notes on the use of "own" download and upload directories
  87.  
  88. ===============================================================
  89. I) Installation Instructions
  90.  
  91. The first thing you should do is unzip the BBS .ZIP file (BBS102d.zip)
  92. to an EMPTY temporary directory. You then install the files, modify
  93. some parameters, test it, and let the world know!
  94.  
  95.  
  96. I.1) --- Installing BBS files:
  97.  
  98.    Most people will probably want to use the BBS installer. It's
  99.    the INSTALL.CMD file that is shipped in the BBS .ZIP file (you
  100.    did unzip BBS to an empty temporary directory?). To use it, just
  101.    type INSTALL at an OS/2 command prompt (make sure your default
  102.    directory is this "empty temporary directory" you unzipped BBS into).
  103.  
  104.    For those who want finer control, or if you are curious as to what
  105.    INSTALL will do:  please read the following step-by-step instructions.
  106.  
  107.     1) Copy:
  108.           BBS.CMD,
  109.           BBS.INI
  110.           BBSCACHE.CMD
  111.           BBSRECNT.CMD
  112.           BBSNEWU.CMD, and
  113.           BBSUP.CMD
  114.           BBSCONFG.CMD
  115.        to your GoServe working directory (i.e.; D:\GOSERVE).
  116.  
  117.     2) Copy:
  118.           BBSHELLO.HTM,
  119.           BBSLOGON.HTM,
  120.           BBSPLAY.HTM,
  121.           BBS1A.HTM,
  122.           BBS1B.HTM,
  123.           BBSUP.HTM and
  124.           BBSNEWU.HTM
  125.        to your GoServe "data directory" (say, D:\WWW).
  126.     2a) Copy:
  127.            *.GIF
  128.          to the /IMGS/ subdirectory of your GoServe data directory.
  129.             Note that the /IMGS/ subdirectory should contain the small
  130.             .GIF files installed by SRE-Filter.
  131.  
  132.     3a) Create a "BBS parameters directory".
  133.            For example, D:\GOSERVE\BBSDATA
  134.     3b) Create a "BBS files directory".
  135.            For example, D:\BBSFILES.
  136.              This is where the contents of your bulletin board (the file area)
  137.              is located.
  138.     3c) Create several BBS working directories:
  139.         i) Create a "BBS user log directory".
  140.            For example, D:\GOSERVE\BBSDATA\USERLOG
  141.        ii) Create a "BBS upload directory".
  142.            For example,  D:\GOSERVE\BBSDATA\UPLOAD
  143.       iii) Create a "BBS cache directory".
  144.            For example, D:\GOSERVE\BBSDATA\CACHE.
  145.  
  146.     4a) Copy:
  147.            BBS.HDR (the default "HEADER" file)
  148.            BBS.FTR (the default "footer" file)
  149.            BBSZIP.HDR (the default "ZIP HEADER" file)
  150.            BBS.CTL (the default "access control" file)
  151.            BBS.DSC (the default "descriptor" file)
  152.            BBS.EXC (the default "exclusion" file)
  153.            FILES.BBS (the sample "inclusion mode" file)
  154.         to your BBS parameters directory (that you created in step 3a).
  155.  
  156.     4b) Copy:
  157.            BBSSTAT.CMD (the statistics generator)
  158.         to your BBS user log directory (that you created in step 3c.i).
  159.  
  160.  
  161. I.2) -- Modifying parameters
  162.  
  163.   To set/modify the various BBS parameters, most people will probably want
  164.   to use the BBS configurator.
  165.          To use the BBS configurator, (after installing BBS) just point your
  166.          browser at  http://your.server/bbsconfg?
  167.          (make sure you include the trailing ?, with nothing after it).
  168.   You will be given a lightly documented form that allows you to change
  169.   almost all the BBS parameters.
  170.  
  171.   Alternatively, if you aren't afraid of getting personal with the a text
  172.   editor, you can edit the BBS.INI file (look in your GoServe working
  173.   directory).
  174.  
  175.   In either case, the following steps are recommended. If you are an
  176.   undemanding bbs-master, they will be enough to get you started.
  177.   You'll probably want to read the "hint and suggestions" (section 1a)
  178.   to get some ideas on what can be done with BBS.
  179.   If you like to tinker, then you should read the volumunious descriptions
  180.   contained in the latter portion of this document.  In particular, section
  181.   IX describes the various and sundry BBS initialization parameters.
  182.  
  183.     1) Set the following "BBS directories" parameters:
  184.            BBS_PARAM_DIR : The "BBS parameters directory" (set in I.1.3a above)
  185.            FILE_DIR   :    The "BBS files directory" (set in I.1.3b above)
  186.            USERLOG_DIR:    The "BBS user log directory" (set in I.1.3c.1 above)
  187.            INCOMING_DIR:   The "BBS upload directory" (set in I.1.3c.ii above)
  188.            BBSCACHE_DIR:   The "BBS cache directory" (set in I.1.3c.iii above)
  189.  
  190.          *** If you used INSTALL.CMD to install BBS, you can use the default
  191.              values of these parameters. ***
  192.  
  193.        1a) If you do NOT want a HEADER and FOOTER added to your
  194.            directory displays, set the HEADER_FILE, FOOTER_FILE, and
  195.            ZIP_HEADER_FILE variables to ' '.  If you do want HEADERs
  196.            and FOOTERs displayed, you SHOULD EDIT THESE FILES!
  197.  
  198.        1b) The HEADER_FILE, FOOTER_FILE, and ZIP_HEADER_FILE
  199.            can be "directory specific".  BBS will first look for
  200.            these files in the requested directory, and if not found
  201.            it will then look in the BBS_PARAM_DIR directory.
  202.  
  203.         1c) If you want newly registered users to be assigned an "own" upload
  204.             and download directory, set the OWN_DOWNLOAD_DIRECTORY and
  205.             OWN_UPLOAD_DIRECTORY parameters (see section XII for details).
  206.  
  207.      2) Edit the BBS.EXC  "exclusion" file (in your BBS_PARAM_DIR).
  208.         As with HEADER_FILE, etc.; the BBS.EXC file can be
  209.         "directory specific".  Note that exclusions are not additive --
  210.         the version of the exclusion file located in the BBS_PARAM_DIR
  211.         directory is used ONLY if there is no "directory specific" exclusion
  212.         file. If you do NOT want to use an exclusion file, set the
  213.         EXCLUSION_FILE variable to ' '.
  214.  
  215.       3) Edit the BBS.DSC "descriptors file" (in your BBS_PARAM_DIR
  216.          directory). As with the HEADER_FILE, etc.; the BBS.DSC file can
  217.          be directory specific.  However, it is cumulative:
  218.          descriptions from the version of BBS.DSC located in your
  219.          BBS_PARAM_DIR directory are added to an "own directory"
  220.          version of BBS.DSC (if an entry occurs in both files, the "own
  221.          directory" version is used).
  222.  
  223.       4) Edit the BBS.CTL "access control" file (in your BBS_PARAM_DIR
  224.          directory).  If you do NOT need to control access to specific
  225.          directories, you can skip this step.
  226.  
  227.       5) If you want to use the "FILES.BBS" emulator, then set
  228.          the INCLUSION_MODE_FILE variable to the name of your
  229.          directory listing file (i.e.; FILES.BBS).
  230.  
  231. I.3) Give it a try
  232.   You are now ready to go (assuming you also read the "IMPORTANT
  233.   INSTALLATION NOTES" at the top of this document).
  234.  
  235.   You can use BBSHELLO.HTM as your "welcome" screen.  Feel free
  236.   to modify it, but please do pay attention to the embedded comments.
  237.        Or, to get a hang of what BBS can do, you can try BBSPLAY.HTM.
  238.   Note that you may want to "register" a few users right away,
  239.   such as yourself!
  240.   Advanced users note: if you like to customize, you should look at BBS1A.HTM 
  241.                          and BBS1B.HTM.
  242.  
  243.  
  244. I.4) Tell the world
  245.    If I knew how to do that well, I'ld be a happier software developer.
  246.  
  247. I.5) Notes:
  248. *  To disable caching, set the CACHE_FILES parameter to 0.
  249.     Alternatively, you can include a "NOCACHE=1" option in the request string.
  250.  
  251. *  BBS will attempt to send pieces of the response as they become
  252.    available.  This speeds up percieved throughput (since something is
  253.    displayed almost immediately), at the expense of slightly increasing
  254.    server load. If you wish, you can turn this off by setting the
  255.    SEND_FILE parameter in BBS.CMD (that's right, it's NOT in BBS.INI).
  256.  
  257. *  To select "authorization" mode, set the AUTHORIZATION_MODE parameter
  258.    (in BBS.CMD) to 1. See the next section for a discussion of
  259.    authorization mode.
  260.  
  261. *  You may want to customize the various BBS*.HTM files (that you
  262.    copied in step 2 above). If you do, please pay attention to the
  263.    embedded comments. For example, the BBSHELLO.HTM file points
  264.    to several other BBS*.HTM files -- make sure those links
  265.    aren't broken.
  266.  
  267. *  If you wish to name your "request username" response file to something
  268.    other then BBSLOGON.HTM, change the BBS_LOGON_FILE variable.
  269.    Note that the BBS_LOGON_FILE is assumed to be relative to the GoServe data
  270.    directory, or to a virtual directory -- you should NOT specify a fully
  271.    qualified directory.
  272.  
  273. *  We HIGHLY recommend that you customize  the BBS.HDR, BBS.FTR, BBSZIP.HDR,
  274.    and BBS.EXC files.  You can use the versions that come with BBS as a
  275.    template.
  276.  
  277. *  FILES.BBS files can be used as a BBS descriptor file (your will need to
  278.    you can change the value of the DESCRIPTION_FILE variable in BBS.INI).
  279.    You may also want to change the value of the CONTINUATION_FLAG variable.
  280.  
  281. *  If you choose to use an INCLUSION_MODE_FILE, be aware that the "descriptor
  282.    file (BBS.DSC) will be ignored, sorting of files is not attempted (since the
  283.    order of display is strictly controlled by the INCLUSION_MODE_FILE).
  284.    However, most other parameters and options (including display options,
  285.    caching, HEADER, and FOOTER files) remain valid.
  286.  
  287. *  If you use the OWN_UPLOAD_DIRECTORY and OWN_DOWNLOAD_DIRECTORY parameters,
  288.    be aware that BBS will create subdirectories (under these directories)
  289.    when a new user registers.
  290.  
  291. ===============================================================
  292. Ia) Some Hints and Suggestions
  293.  
  294. * The following parameters will be of greatest interest.  For details,
  295.   see section IX.
  296.  
  297.    FILE_DIR
  298.        The location of your "main file area".
  299.  
  300.    DEF_BIN_TEXT_LINKS (enabled by default)
  301.       If DEF_BIN_TEXT_LINKS is enabled (and you do NOT include a NOICONS=1 
  302.       option in the request string), each entry will contain 3 links:
  303.         1) A "text icon" to "download as text"
  304.         2) A "binary icon" to "download as binary"
  305.         3) An "underlined file name" to download using SRE-Filter's
  306.            mime-type resolution algorithim (i.e.; .HTM files are downloaded
  307.            as text/html documents).
  308.       If this is too crowded, you can set DEF_BIN_TEXT_LINKS=0 (in BBS.INI).
  309.  
  310.     WRITE_DETAILS (enabled by default)
  311.        If WRITE_DETAILS is enabled, then transactions are recorded in the
  312.        user's log file.  By default, these files are in the BBSDATA\USERLOG
  313.        directory, and have names of the form USERNAME.IN (i.e.; someone with
  314.        a user name of JOE will have JOE.IN file).  You might want to
  315.        keep an eye on these files to make sure they don't get too big.
  316.  
  317.    TABLE_BORDER and CELL_SPACING (default values are 0 pixels, and 2 pixels)
  318.        These can increased to help offset each entry (each row/column of
  319.        the table of entries). 
  320.  
  321.     DEFFAULT_DATEFMT  (default value is 10 Mar 1997).
  322.         You can set this to one of several styles; such as 10/3/97
  323.         or 3/10/97. 
  324.  
  325.     USE_SERVERNAME (default: your server's IP name)
  326.         You might want to set this to be a "colloquial" name,
  327.         such as "The Fabulous BBS at FOO.BAR.NET".
  328.  
  329.     DEFAULT_RATIO and DEFAULT_BYTE_RATIO (default= ignore)
  330.         If you want to encourage uploads from your BBS members,
  331.         you should set these values (and read section VI).
  332.  
  333.      OWN_DOWNLOAD_DIR and OWN_UPLOAD_DIR (default: disabled)
  334.          If you want to grant new users a "personal" upload and
  335.          download directory, you should set these values.
  336.  
  337. *  If you want to experiment with the various "request string" options,
  338.    you can play with BBSPLAY.HTM.
  339.  
  340.  
  341. *  The BBSCACHE.CMD "caching daemon" can help keep your cache up to date.
  342.    See section XI for details.
  343.  
  344. *  BBSSTAT.CMD (in the USERLOG directory) can be used to create use
  345.    statistics.
  346.  
  347. *  Instead of BBSHELLO.HTM, you may wish to modify BBS1A.HTM and BBS1B.HTM --
  348.    they allow you to customize the BBS front end (i.e.; you can set up a
  349.    table of "file areas", each of which will be handled by BBS).  See BBS1A.HTM
  350.    and BBS1B.HTM for details.
  351.  
  352. ===============================================================
  353. II) Choosing Authentication Mode or Native Mode
  354.  
  355. BBS has two modes: a native mode, and an "authentication mode".
  356. In general, we recommend the native mode; but in some circumstances
  357. the authentication mode may be preferred.
  358.  
  359. Roughly speaking, "authentication mode" is similar to using "cookies" to
  360. identify username and passwords, with the difference being in how the BBS
  361. requests (and reads) the username and password.  The main advantage of
  362. "authentication mode" is that older browsers (that do not understand cookies)
  363. will work.  The major disadvantage is that BBS "logon" must be more closely
  364. coordinated with SRE-Filter's access control facilities.
  365.  
  366. More specifically, authentication mode has the following features:
  367.   a) Browser authentication tools are used to ascertain who the users is.
  368.      In particular, when an unknown user attempts to access BBS, she is then
  369.      "challenged" with the username/password screen (that her browser displays
  370.      when it recieves a '401 Unauthorized' response).
  371.   b) If you are using the SRE-Filter logon or selector-specific access
  372.      controls, the BBS username must be the same as the "SRE-Filter" username
  373.      (as set in SRE-Filter's USERS.IN file).
  374.   c) BBS Registration is granted automatically to everyone with "server" logon
  375.      rights (new BBS users will automatically be given a simple "user log"
  376.      file).
  377.  
  378. In contrast, the native mode has the following features:
  379.   a) Username and password information is built into the request string.
  380.      Alternatively, if the client's browser understand cookies (i.e.;
  381.      Netscape 1.3 and  above), it's passed in an  unencoded "cookie".
  382.   b) SRE-Filter's user list (USERS.IN0 is not needed (though it may still be
  383.      used by SRE-Filter for general access controls).
  384.   c) If a user is not found, a customizable HTML document (set in the
  385.      BBS_LOGON_FILE parameter) is returned, which asks for a username and
  386.      password, or allows one to "register" as a new user.
  387.   d) Anyone with access to your site, whether or not they have an explicit
  388.      entry in SRE-Filter's user list, can register as a BBS user (you can
  389.      suppress this auto-registration feature).
  390.  
  391.  
  392. Basically, authentication mode is similar to the use of "cookies",
  393. and can be handled by most browsers. On the other hand, it is  a little less
  394. flexible (you can't customize the "logon" prompt, and you have to be careful
  395. about coordinating BBS usernames with SRE-Filter usernames).
  396.  
  397. ==============================================================
  398. II.a) Using INCLUSION_MODE_FILE for refined control
  399.  
  400. Introduction:
  401.   The INCLUSION_MODE_FILE parameter is used when you already have an extensive
  402.   list of "FILES.BBS-style" directory descriptor files, or if you are willing
  403.   to create such a set of files (one per directory).
  404.  
  405.   INCLUSION_MODE_FILE is similar to the EXCLUSION_FILE; except rather then
  406.   listing files to exlude, it lists files and sub-directories that may be
  407.   included -- if a file appears in the directory and is not explicitily listed
  408.   in the "own directory" INCLUSION_MODE_FILE, then it will NOT be shown to the
  409.   user.  Note that unlike the EXCLUSION_FILE, wildcard matches are NOT used.
  410.  
  411.   In addition, use of the INCLUSION_MODE_FILE gives one a few additional
  412.   options:
  413.     i)  The order of display is controlled by the order of appearance in
  414.         the INCLUSION_MODE_FILE.
  415.     ii) You can include "comment lines" that will be displaed in the
  416.         order of appearance.
  417.     iii) You can specify a "preview mode" -- only the INCLUSION_MODE_FILE
  418.          will be sent to the user; with an optional "link" back to
  419.          the regular file listing. This is useful for quick review
  420.          of site contents.
  421.  
  422.   Of course, the downside is that you have to create an INCLUSION_MODE_FILE
  423.   in EACH directory (though you could use tools from other packages to assist
  424.   in this task).
  425.   AND REMEMBER: Files, and subdirectories not explicitily listed in
  426.                 a directory's INCLUSION_MODE_FILE will NOT be displayed.
  427.  
  428. Basic structure:
  429.   There are 3 types of entries in the INCLUSION_MODE_FILE.
  430.    i) If the first character is a non-space, it is ALWAYS interpreted
  431.       as a filename or a directory name.  Directory names are signified
  432.       by using a / as the first character.
  433.       Following the file or directory name (seperated by at least one
  434.       space) is the (first line of the) description.
  435.    ii) If the first character is a space, and the next NON-SPACE character
  436.        is the "continuation flag" (stripped of spaces), then the
  437.        line is treated as a "continuation" of a previous file
  438.        (or directory) description.
  439.   iii) If the first character is a space, and the next NON-SPACE character
  440.        is NOT the "continuation flag", the line is treated as
  441.        a comment. Comments are displayed as seperate lines in the
  442.        document (they will span the entire width of the table).
  443.  
  444.   It is likely that the INCLUSION_MODE_FILE will occasionally reference
  445.   a non-existent file or directory.  Should this happen, a "not available"
  446.   entry will be included in the file listing. This listing will contain
  447.   the name of the file (without a link associated), and the
  448.   first line of the description (as pulled from the INCLUSION_MODE_FILE).
  449.  
  450. Notes:
  451.   * A single character "continuation flag" (as set in the
  452.     CONTINUATION_FLAG parameter) should not be used.
  453.   * The EXCLUSION_FILE is still used -- it is checked AFTER
  454.     the INCLUSION_MODE_FILE.
  455.   * The DESCRIPTION_FILE is ignored -- the descriptions are all pulled  from
  456.     the INCLUSION_MODE_FILE. Similarly, AUTO_DESCRIBE is not available.
  457.   * Sorting is ignored -- files are displayed in the order of appearance
  458.     (in the INCLUSION_MODE_FILE).
  459.   * HEADER, FOOTER, and comments found in the INCLUSION_MODE_FILE, are
  460.     all displayed.
  461.   * When using BBS's "table mode": comments written before the first file
  462.     entry are written above the table header (but below the document HEADER).
  463.  
  464.  
  465. Notes on Preview Mode:
  466.   * To indicate a "preview mode", just include a &PREVIEW=1 in the request
  467.     string.  You could do this by adding a "hidden" form element to
  468.     BBSHELLO.HTM.
  469.        For example: http://your.server/bbs?dir=/foo1&preview=1
  470.   * To suppress the "link back" to the regular file listing (the listing
  471.     that contains links to the actual files), use &PREVIEW=2.
  472.   * When the user selects a "link back", all sub directories of the selected
  473.     directory will have "preview" links.
  474.   * If you want to display a directory with a full listing of files
  475.     (including links), but a "preview" listing of subdirectories, use
  476.     &PREVIEWDIRS=1.
  477.        For example: http://your.server/bbs?dir=/foo1&previewdirs=1
  478.   * Note that to return to the page from which a "preview link" was
  479.     initiated, the user must use her browsers "back" button.  That is, the
  480.     only explicit link included in a "preview link" invoked document is the
  481.     link to the "regular listing" represented by the displayed
  482.     INCLUSION_MODE_FILE.
  483.  
  484. Notes on directory entries in the INCLUSION_MODE_FILE:
  485.   * Directory entries MUST be placed in the INCLUSION_MODE_FILE.  If not
  486.     explicitily included, links to subdirectories will NOT be displayed.
  487.   * Directory entries should start with a /, and should be relative to the
  488.     "own directory".  Thus, an entry of /SUBDIR1 is valid, but an entry of
  489.     D:\BBSFILES\SUBDIR1 is not allowed.
  490.   * Directories are ALWAYS displayed at the end of the document, regardless
  491.     of where the directory entry occurs in the INCLUSION_MODE_FILE.
  492.   * Comments can NOT be interspersed with directory entries (since the
  493.     directory entries are moved to the end of the document, but comments are
  494.     not).
  495.  
  496. Examples:
  497.       INCLUSION_MODE_FILE='FILES.BBS'
  498.       INCLUSION_MODE_FILE=0
  499.  
  500.       For a very simple sample of an INCLUSION_MODE_FILE, see the
  501.       FILES.BBS file that comes with BBS.
  502.  
  503. ===============================================================
  504. II.b) Using BBSRECNT to display recent files
  505.  
  506. The BBSRECNT.CMD facility allows you to create an index of "recently
  507. added" files.  This index will contain file names, and descriptive
  508. information, that BBS can use to display "a list of recent files".  Note that
  509. this list can span several directories (but it can not contain links to other
  510. directories).
  511.  
  512. The following outlines how one might use BBSRECNT:
  513.  
  514.    1) From an OS/2 prompt (in your GoServe working directory),
  515.       run BBSRECNT.CMD
  516.    2) BBSRECNT will ask you several questions. Let's assume
  517.           you use the defaults.
  518.    3) Create a link that you put in your BBSHELLO.HTM file.
  519.      For example:
  520.           <a href=bbs?user=auser&pwd=apwd&Index_list=bbsrecnt.idx>
  521.           See the latest additions? </a>
  522.  
  523.      Alternatively, if everyone is using Netscape, and you have
  524.      BBS's cookie-mode enabled, you could put the following link in a
  525.      footer file:
  526.           <a href=bbs?index_list=bbsrecnt.idx>See the latest additions?</a>
  527.  
  528.     In either cases when this link is selected, the files chosen
  529.     by BBSRECNT.CMD will be displayed.
  530.  
  531.  
  532. NOTES:
  533.  
  534.   *  When BBS uses an index, it first checks that the client has
  535.      privileges for EACH file contained in the index. Files for which
  536.      the client does NOT have privileges are NOT displayed (files for
  537.      which a client DOES have privileges ARE displayed).
  538.  
  539.   *  When BBSRECNT is run, it will check the various (possibly directory
  540.      specific) EXCLUSION_FILES (and drop all files that appear in an
  541.      appropriate exclusion file).
  542.  
  543.   *  If you use a "cookie" (no explicit mention of user or pwd) link
  544.      to an "index list", and a non-cookie browser is being used;
  545.      BBS will use the BBS_LOGON_FILE to request a user/pwd from
  546.      the client.
  547.  
  548.   *  BBSRECNT.CMD will look in the DESCRIPTOR (.DSC) files for descriptions --
  549.      it will NOT attempt auto_descriptions.
  550.  
  551.   *  These indices are NOT dynamic -- BBS uses them as is. So, if things
  552.      change on your site, you have to re-run BBSRECNT.CMD
  553.  
  554.   *  When displaying an INDEX_LIST, BBS will use most of the request and
  555.      BBS.INI options (but sorting can only be set when you create the
  556.      index list).
  557.  
  558.   *  A special option, INDEX_DAYS, can be included to further narrow the
  559.      set of files displayed. For example:
  560.                 BBS?INDEX_LIST=BBS1.IDX&INDEX_DAYS=20
  561.      where BBS1.IDX may contain files added in the past 30 days.
  562.  
  563.   *  You can create as many different "index lists" as you want -- just be
  564.      sure to use different links (that is, different values for the
  565.      INDEX_LIST option).
  566.  
  567.   *  Ambitious programmers may wish to create their own "index list"
  568.      generators, that may use criteria other then file dates.  You can
  569.      see BBSRECNT.CMD for a description of what is expected in these
  570.      "index list" files.
  571.  
  572.    * As a complement to BBSRECNT, you may also want to create a "search
  573.      index" of your BBS site.  This can be easily done with SRE-Filter's
  574.      SRCHINDX.CMD add-on (http://rpbcam.econ.ag.gov/srefilter/srchindx.zip).
  575.      One nice trick is to create a "description cache" using the .DSC files
  576.      in your BBS directories -- and then include a "search descriptions
  577.      using SRCHINDX" link in your  BBS logon page.
  578.      For further details, see the SRCHINDX documentation at
  579.      http://rpbcam.econ.ag.gov/srefilter/srchindx.doc
  580.  
  581.  
  582. ===============================================================
  583. III) The User Log Files
  584.  
  585. The User Log files, which are located in the USERLOG_DIR directory, are used
  586. to store user specific information.  These files are first created when an
  587. individual "registers" -- typically by invoking the BBSNEWU.HTM document, or
  588. indirectly from BBSLOGON.HTM.  They contain various information, some of which
  589. you may wish to change on a fairly frequent basis.
  590.  
  591. User Log files are named as username.IN, where username is the "username" an
  592. individual "registered" with.  Thus, a user with the name KAREN will have a
  593. KAREN.IN user log (in the USERLOG_DIR directory).
  594.  
  595. ---  Example of a User Log file. Lines beginning with a ; are comments.
  596.  
  597. ; User file for :  daniel
  598. ; The status: line contains information on downloads and uploads:
  599. ;    Dwnld_files  Upld_files  Dwnld_bytes Upld_bytes time_last_dwnld
  600. Status: 5 0 79959 0 729000.658
  601. ; the User: line contains the username and password (unencoded)
  602. User:  daniel   purple
  603. ; The Privilege: line contains his privileges.
  604. ; !! YOU WILL WANT TO MODIFY THIS LINE IF YOU WISH TO USE BBS.CTL
  605. ;    FOR ACCESS CONTROL !!
  606. Privileges:  NEWUSER group1 group3
  607. ; The ratio: line contains the user's upload ratio -- you may
  608. ; want to change this for favored (or unfavored) users
  609. ; In extreme cases, setting a ratio of -1 means "no downloads permitted"
  610. ; Alternatively, a ratio of 0 means "unlimited" (assuming no other ratios apply)
  611. ; Note that the DEFAULT_RATIO and DEFAULT_BYTE_RATIO variables are used
  612. ; to initialize this "Ratio".
  613. Ratio :  8 100
  614. ; The "real name" of the user.
  615. Name:  danny h
  616. ; The user's E-mail address
  617. Email:  dhm@nowhere.org
  618. ; (optional) A (set of) user specific download & upload directories.
  619. ;  These both contain:
  620. ;     a "prefix", and
  621. ;     a fully qualified directory
  622. ;  Upload_dir entries may contain an (optional) "weight factor"
  623. ;  Download_dir entries may contain an (optional) "privilege list"
  624. ;  Note that the OWN_DOWNLOAD_DIRECTORY, OWN_UPLOAD_DIRECTORY, and OWN_FLAG
  625. ;  variables are (optionally) used to initialize these entries.
  626. Upload_Dir: myup dmh/
  627. Download_Dir: personal  d:\bbs2\danielh
  628. ;
  629. ; other, miscellaneous variables (not currently used by BBS)
  630. SENDNOTES: 1
  631. ;
  632. ; the Messages: line signals the end of the main section.
  633. ; Entries recording individual transactions are written below here.
  634. ; These entries are created if write_details=1 (set in BBS.INI)
  635. Messages:
  636. DIR1/    ADDHITC.SRF   15:44:58 8 Dec 1996
  637. DIR1/    Extract from SREFPRC1.ZIP   makelib.cmd   15:45:38 8 Dec 1996
  638. DIR3/    SHOWDIR.DOC   15:46:03 8 Dec 1996
  639.  
  640. ----- End of example.
  641.  
  642. Notes:
  643.  * In "authentication mode", the User Log files are based on the SRE-Filter
  644.    username.  They will be created automatically upon an individual's first
  645.    access to BBS -- the individual is not informed of it's creation.
  646.  
  647.  * For efficiency reasons, there should NOT be more then 40 lines before the
  648.    MESSAGE: line -- you should remove comment lines if you are above
  649.    this limit (say, if you have several miscellaneous variables, or
  650.    several UPLOAD_DIR and DOWNLOAD_DIR entries).
  651.  
  652.  * The User Log files can be used to track all download requests made by an
  653.    individual (these entrires are placed at the end of the file).  To enable
  654.    this, set WRITE_DETAILS=1.
  655.  
  656.  * BBS also maintains a count of all downloads, on a "file specific" basis.
  657.    This record is contained in the BBS.CNT file in your BBS_PARAM_DIR
  658.    directory.
  659.  
  660.  * The DOWNLOAD_DIR and UPLOAD_DIR parameters must contain a "prefix" and
  661.    a fully-qualified directory name. See Section XII for further discusssion.
  662.  
  663. ===============================================================
  664. IV)  Using BBS.CTL to control access to selected directories.
  665.  
  666. If you want to control access to selected directories, the BBS.CTL file can
  667. be used.  BBS.CTL can also be used to assign which "root directory" the
  668. "requested directory" is relative to.
  669.  
  670. For details on how to add entries to BBS.CTL, please read the version of
  671. BBS.CTL that is shipped with BBS.  Briefly,
  672. each entry should have the structure:
  673.        dir  priv_list  , root_dir
  674. where:
  675.        dir is a possible "requested directory",
  676.        priv_list is a list of "required privileges"
  677.        root_dir is an (optional) "alternative root directory"
  678.  
  679. Examples:
  680.   1) /DIR1 (of your FILE_DIR directory), and it's subdirectories,
  681.       are open to everyone.
  682.           /dir1/*   *
  683.      Note the use of an asterisk (a *):
  684.        i)  as a wildcard for "all subdirectories", and
  685.       ii)  as an "everyone has access" privilege.
  686.  
  687.   2) /DIR2 (and it's subdirectories) are available only to users with
  688.      a CATS  privilege.
  689.        /dir2/*   CATS
  690.  
  691.   3) /DIR3 is available only to users with a DOGS privilege. Also,
  692.      /DIR3 is relative to d:\others, and not to the default FILE_DIR.
  693.      Lastly, subdirectories of d:\others are NOT available (since
  694.      no * appears after the /dir3).
  695.         /dir3     DOGS , d:\others
  696.  
  697. Note: If FILE_DIR = 'D:\BBSFILES:
  698.          Example 1 refers to all files in D:\BBSFILES\DIR1 and it's
  699.          subdirectories.
  700.          Example 2 refers to all files in D:\BBSFILES\DIR2 and it's
  701.          subdirectories.
  702.          Example 3 refers to all files in  D:\OTHERS\DIR3.
  703.  
  704.  
  705. Notes:
  706.  *  In order to use privileges, you'll have to add appropriate privileges
  707.     to the lucky user(s) "user log" file(s).  See the section III,
  708.     "The User Log Files", for details.
  709.  
  710.  *  BBS.CTL is part of the "setting a  user's download/upload ratio"
  711.     puzzle. See the section VI, "Determining the user's required
  712.     download/upload ratio", for details.
  713.  
  714.  *  See the discussion of "own" download and upload directories (in section
  715.     XII) for an alternative means of dictating "root directories".
  716.  
  717.  
  718. ===============================================================
  719. V) Notes on file uploads.
  720.  
  721. File uploads are achieved through the use of  the "multipart/form-data"
  722. variant of html FORMS.  Specifically, HTML 3.2 compliant browsers
  723. (such as  NetScape 2.01) will transfer a file to the server
  724. when an <input type="file" ...> element appears in an html FORM.
  725.  
  726. BBSUP.HTM is an example of such an html form -- it can be used as-is to
  727. provide access to the BBS uploader.
  728.     Feel free to modify BBSUP.HTM, but do pay attention to the embedded
  729.     comments).
  730. BBSUP.HTM calls the BBSUP.CMD component of BBS.  When BBSUP.CMD
  731. gets a request, it will:
  732.   1) Check the http syntax. If the syntax is not correct, an
  733.      error message is returned.
  734.   2) Determine the upload directory.  By default, uploads
  735.      are to the INCOMING_DIR directory (or are relative to it).
  736.      This can be changed by the use of UPLOAD_DIR entries in the
  737.      user log file(s) (see section XII for details)
  738.   3) Check to see if the name that the file will be saved to (in
  739.      the upload directory) already exists.
  740.      If a file with the desired name already exists, an error message
  741.      will be returned.
  742.      Hint: if you don't care about exact names, you can instruct
  743.             the user to include ? characters in the file name.
  744.             These will be filled in with characters that should
  745.             yield a unique name.
  746.   4) Save the uploaded file.
  747.   5) Return a short status message.
  748.   6) Record the upload in the user's user log file.
  749.   7) Write a note to the UPLOAD.LOG file (which is located in your
  750.      BBS_PARAM_DIR directory) describing the details (user name,
  751.      original filename, filename saved as, etc.) of the upload.
  752.   8) Optionally, send an E-mail not to the BBS-administrator informing
  753.      her of this upload (see the ADMIN_EMAIL, BBS_SMTP_GATEWAY, and
  754.      SEND_ALERT variables for details).
  755.  
  756. Example:
  757.        INCOMING_DIR =  'b:\upfiles'
  758.        BBS_PARAM_DIR =    'D:\BBS'
  759.        the users UPLOAD_DIR parameter = 'myup d:\private\bobj'
  760.        the uploaded file is to be saved as 'myup\simple\minds.htm'
  761.    then BBS will write the uploaded data to d:\private\bobj\simple\minds.htm
  762.  
  763.  
  764. ** A Note on Configuring GoServe
  765.  
  766. GoServe (especially earlier versions) seems to have intermittent problems when
  767. processing these multipart requests.
  768. These settings sometimes help:
  769.      1) Double click on the GoServe icon
  770.      2) Select the OPTIONS  menu
  771.      3) Select the LIMITS tab
  772.      3) Change the Connection Maintain to some relatively large positive value.
  773.         The proper value should be determined by experimentation, and
  774.         may depend on the size of files being transfered.
  775.      4) You may also want to go to page 2 of this tab, and change the
  776.         "body data size" variable (to the largest size you expect to recieve).
  777.         NOTE THAT GOSERVE SEEMS TO HAVE A 1M LIMIT ON UPLOADS.
  778.  
  779.  
  780.  
  781. ================================================================
  782. VI) Determining the user's required download/upload ratio.
  783.  
  784. To encourage active participation by users of your bulletin board, you can
  785. require that each user maintains a satisfactory download to upload ratio.  BBS
  786. offers a number of mechanisms to enforce this; including options to set
  787. different requirements per directory, or per user.
  788.  
  789. The client's required upload download/upload ratio is determined using the
  790. maximum of:
  791.         #1) The value of the RATIO: entry in her user log file.
  792.         #2) The "privilege specific" ratios associated with a directory.
  793.  
  794.     #1  (which is initialized with the DEFAULT_RATIO and
  795.     DEFAULT_BYTE_RATIO parameters) is designed to provide "user specific"
  796.     ratios.
  797.  
  798.     #2 is designed to provide ratios to "groups of users".
  799.  
  800.     In order to provide flexibility, BBS uses the following (slightly
  801.     complicated) method of determining which "group" the user falls into.
  802.  
  803.     The basic logic is:
  804.        i)  If the requested directory matches an entry in the BBS.CTL file
  805.            (or a matching DOWNLOAD_DIR entry in the .IN file), the
  806.            "privileges" associated with this entry are read.
  807.  
  808.        ii) If there is no matching entry, the following steps are skipped --
  809.            only #1 above is used to determine the user's download to upload
  810.            ratio.
  811.  
  812.       iii) These "directory privileges" are compared to the "user's
  813.            privileges".  The matches (the privileges in both lists)
  814.            are then extracted.
  815.  
  816.            Notes on matches:
  817.                   * If there are no matches (and a BBS.CTL entry is being
  818.                     used), the client is denied access to this directory (in
  819.                     which case, the ratio is irrelevant).
  820.  
  821.                   * For matches to a DOWNLOAD_DIR entry, privileges are NOT
  822.                     used to control access.
  823.  
  824.                   * The user's privileges are read from the Privileges:
  825.                     entry in her user log file.
  826.  
  827.        iv) For each element (of this set of matching privileges), a
  828.            "privilege specific" ratio is read from a PRIV_RATIO.! parameter.
  829.            If such a PRIV_RATIO.! entry has not been defined, this element
  830.            is skipped.
  831.  
  832.            Notes:
  833.               * PRIV_RATIO.! parameters are set in the BBS.INI file
  834.               * there is NO requirement that you specify a PRIV_RATIO.!
  835.                 parameter for all the privileges you might use.
  836.  
  837.  
  838.  Summarizing:  The maximum of the "privilege specific" ratios (from step iv)
  839.                and the user specific ratio (from #1) is  used as the required
  840.                download to upload ratio.
  841.  
  842.  Important note:  A ratio of "0" means unlimited, BUT if a ratio of
  843.                   0 and a non-0 ratio are found, the non-zero ratio
  844.                   is used!  That is, "0 means unlimited" is ONLY used
  845.                   if NO other information is available.
  846.  
  847. Example:
  848.   Assume:
  849.     a) The BBS.CTL File contains:
  850.           /dir1   GROUP1
  851.           /dir2   GROUP2
  852.           /dir12  GROUP1 GROUP2
  853.           /dir34  GROUP3 GROUP4
  854.           /dir35  GROUP3 GROUP5
  855.     b) The clients user log file contains:
  856.         Privileges: GROUP1 GROUP3 GROUP5 NEWUSER
  857.         Ratio: 20 100
  858.     c) The BBS.INI file contains:
  859.         PRIV_RATIO.!GROUP2='50 1000'
  860.         PRIV_RATIO.!GROUP3='75 800'
  861.         PRIV_RATIO.!GROUP4='10 4000 '
  862.         PRIV_RATIO.!GROUP5='0  400 '
  863.  
  864.   Requests for files in the following directories will yield:
  865.      /DIR1 ---  the ratio is 20 and 100
  866.                   * no matching PRIV_RATIO entry, so use the  Ratio: values
  867.      /DIR2 ---  the client is not allowed access to /DIR2
  868.                   * she does not have a GROUP2 privilege
  869.      /DIR3 ---  the ratio is 20 and 100
  870.                   * no matching entry in BBS.CTL, so use the Ratio: values
  871.      /DIR34 --  the ratio is 75 and 800
  872.                   * RATIO: and  PRIV_RATIO.!GROUP3  are used, with:
  873.                     max(20,75)=75 and max(100,800)=800.
  874.                   * PRIV_RATIO.!GROUP4 is not used (for this user), since she
  875.                     does not have a GROUP4 privilege.
  876.      /DIR35 --  the ratio is 75 800
  877.                   * RATIO:, PRIV_RATIO.!GROUP3, and PRIV_RATIO.!GROUP5 are
  878.                     used, with: 75=max(20,75,0) and 800=max(100,800,400).
  879.                     Note that the 0 (file) ratio for GROUP5 is NOT used
  880.                     as infinity (however, if all relevant ratios had been
  881.                     been 0, then an "unlimited" download ratio is assumed).
  882.  
  883. Note:
  884.    To suppress downloads on a "per-user" basis (but allow the user to view the
  885.    contents of a directory), you can use -1 as a file ratio in one of your
  886.    PRIV_RATIO.!  variables.  However, if a non "-1" ratio also applies to a
  887.    given user, this suppression will not be invoked (that is, ratios of -1
  888.    and 0 are both subject to the "greater values dominate" rule).
  889.  
  890. Advanced Note:
  891.   You might want to fine tune the "significance" of downloads from selected
  892.   directories.  That is, in addition to relaxing (or tightening) the
  893.   requirements for downloading from a given directory, you may want to state
  894.   that downloads from this directory effect your TOTAL byte (and file) counts
  895.   less then (or more then) usual.  In other words, you may want to "weight"
  896.   the bytes by some factor.  You can do this by setting the appropriate
  897.   PRIV_WEIGHT.!  variables.
  898.  
  899.  
  900. ================================================================
  901. VII) BBS and Caching
  902.  
  903. To improve throughput, BBS supports a form of "dynamic caching" of the
  904. listings of directories and .ZIP file expansions.  This involves "partial
  905. compilation of HTML" files, with these partially compiled files used to honor
  906. sufficiently similar requests.
  907.  
  908.   Basically, after BBS has constructed a document displaying a directory, or a
  909.   .ZIP file expansion, it "caches" a copy of it to the BBSCACHE_DIR directory.
  910.   Since the actual listing may contain user and password information (as may
  911.   the request string that invoked this listing), BBS first strips out username
  912.   and password information.  When a similar request comes in, that differs
  913.   only in the username and password (that is, the same request from a
  914.   different user), BBS will use this "cached" copy (after possibly
  915.   substituting the current username and password).
  916.  
  917. Although this can greatly improve throughput, there are a few potential
  918. drawbacks.  First and foremost, unless otherwise instructed, BBS does NOT
  919. attempt to verify the listing against the current contents of the directory.
  920. Thus, if one removes files from a directory that has been "cached", these
  921. deletions will not be reflected (to the next user requesting a listing of the
  922. directory).  Similarly, changes to the header or footer file will not be
  923. displayed.
  924.  
  925. BBS provides several mechanisms for mitigating this problem.
  926.   1) The CACHE_DURATION parameter.  CACHE_DURATION should be set to number
  927.      of days (where 0.5 yields 12 hours) a "cached file" is valid.  After this
  928.      time has elapsed (measured from the moment the temporary file was
  929.      created), a request will create a new listing (and overwrite the current
  930.      one).  The best value of this parameter will depend on how busy the BBS
  931.      is, both in terms of user requests, and in terms of addition or deletion
  932.      of files.
  933.   2) The INIT option of BBS.  If a BBS?INIT=1 request is issued (by a
  934.      SUPERUSER), BBS will reset the cache (all cached files are deleted).
  935.      This is especially useful after the BBS administrator has made
  936.      substantial changes to the file structure.
  937. ! 3) For greatest efficiency in caching, we highly recommend using the BBS
  938.      caching daemon (BBSCACHE.CMD).  This is described in section XI!
  939.   4) If you enable the CACHE_CHECK variable, file stamps will be checked.
  940.  
  941.  
  942. Another concern is the size of the cache.  This can be controlled with the
  943. CACHE_FILES parameter.  Large values will lead to a larger cache; while small
  944. values save disk space. As a very rough example, if an average "listing" takes
  945. 10-20k, then a CACHE_FILE=100 may lead to a cache of 1 to 2 megabytes.
  946.  
  947. Miscellaneous Notes:
  948.  
  949.  * When the CACHE_FILES limit is hit, BBS will delete the "oldest" listing
  950.    first; no attempt is made to gauge which cached listing is the "busiest".
  951.  
  952.  * The cached listing is unique for all possible combination of options.
  953.    That is (ignoring user and password infomation), a request of BBS?dir=/dir1
  954.    and a request of BBS?dir=/dir1&nosize=1 will lead to seperate listing
  955.    files.  Thus, if you let users easily modify their requests, you may need
  956.    to substantially increase the value of CACHE_FILES.
  957.  
  958.  * If you have a .ZIP file, or a directory, that contains the & character in
  959.    it's name; caching will not work (for convoluted reasons having to with the
  960.    HTML character encoding rules).  However, normal (non-cached) retrieval
  961.    will work.  In other words, for efficiency sake, you should avoid the use
  962.    of the & character in file and directory names.
  963.  
  964.  * If you have enabled the use of "cookies" (by setting USE_COOKIES=1), then
  965.    a seperate cache file is saved for "cookies responses" and "non-cookies"
  966.    responses.
  967.  
  968.  
  969. ================================================================
  970. VIII) Descriptions of request-string options to BBS.
  971.  
  972. Note: A GET method request will consist of:
  973.      BBS?option1=value&option2=value2&....
  974.  
  975.  
  976. The following "options" are recognized (we exclude a few options
  977. that are designed for internal use by BBS):
  978.  
  979. ALTSTART       :  Instead of displaying BBS, redirect to ALTSTART (used by BBS1A.HTM)
  980. BIN_TEXT_LINKS  : Display multiple "links" to the document
  981. DATEFMT        :  The date display format
  982. DIR               : The directory to view
  983. DIRCOLS         : Number of columns to use when displaying directory links
  984. FORCETEXT       : Transfer all files as "text/plain"
  985. FORCEBINARY     : Transfer all files as "application/octet-stream" (binary)
  986. INIT            : Initialize
  987. NOICONS         : Do NOT display icons
  988. NODIR           : Do NOT display parent and child directories
  989. NOTIME          : Dos NOT display file creation time
  990. NODATE          : Do NOT display file creation time and date
  991. NODESC          : Do NOT display file description
  992. NOSIZE          : Do NOT display file size
  993. NOCACHE         : Do NOT cache this directory listing
  994. ROOTDIR         : Do NOT provide link to parent directory
  995. SHORT           : Use a short display format
  996. SIZEFMT         : The file-size display format
  997. SORTBY          : The sorting criteria (date, name, etc.)
  998. TIMEFMT         : The time format
  999. ZIPFILE         : The .ZIP file to view.
  1000.  
  1001.  
  1002.         ------------------------------------------------------
  1003.  
  1004. ALTSTART:  Redirect to an "alternative" startup document
  1005.  
  1006.    ALTSTART should be equal to an absolute or relative URL.   It is typically
  1007.    used by BBS1A.HTM (or your own equivalent) to provide an "alternative" 
  1008.    startup document.
  1009.    For example, you could point to a complicated table, with each cell 
  1010.    corresponding to the root of some directory tree -- with BBS handling
  1011.    each of these trees.
  1012.  
  1013.    Example: ALTSTART="/BBS1B.HTM"
  1014.  
  1015.   Note:  for "cookies" to work properly, the ALTSTART URL should be relative
  1016.          to the document that invokes it.
  1017.  
  1018.  
  1019. BIN_TEXT_LINKS:  If 1, then include a "text" link and a "binary" link.
  1020.  
  1021.           This is a convenient way of allowing the client to choose how
  1022.           the file should be "requested".  
  1023.  
  1024.           Example:  BBS?DIR=SpotDog/Files&bin_text_links=1
  1025.  
  1026.  
  1027.         If BIN_TEXT_LINKS=1, three choices are displayed:
  1028.             i)  a "download at text" link (displaying a text icon)
  1029.            ii)  a "download as binary" link (displaying a binary icon)
  1030.           iii)  a "download as mime type" link (displaying the file name)
  1031.         Note that if NOICONS is set, then i and ii will be displayed as text.
  1032.  
  1033.         If BIN_TEXT_LINKS=0, two choices are displayed:
  1034.             i)  a "download as mime type" link (using an appropriate icon)
  1035.            ii)  a "download as mime type" link (displaying the file name)
  1036.         Note that if NOICONS is set, then i will NOT be displayed.
  1037.  
  1038.         Notes:
  1039.            *  See the DEF_BIN_TEXT_LINKS parameter for an alternative to
  1040.               the use of BIN_TEXT_LINKS.
  1041.            *  If you use BIN_TEXT_LINKS (or DEF_BIN_TEXT_LINKS), you should
  1042.               NOT use FORCETEXT and FORCEBINARY.
  1043.  
  1044.  
  1045. DATEFMT:   Can take several values (see REXX Date function documentation
  1046.            for details):
  1047.  
  1048.           default:    27 Aug 1988
  1049.                 B:    725975
  1050.                 D:    240
  1051.                 E:    27/08/88
  1052.                 L:    27 August 1988
  1053.                 M:    August
  1054.                 N:    27 Aug 1988
  1055.                 O:    88/08/27
  1056.                 S:    19880827
  1057.                 U:    08/27/88
  1058.                 W:    Saturday
  1059.  
  1060.           Example:  BBS?DIR=SpotDog/Files&datefmt=N
  1061.           Example:  BBS?DIR=SpotDog/Files&datefmt=U
  1062.  
  1063.  
  1064. DIR:      This is the "requested directory" to be displayed.
  1065.  
  1066.                 Example: BBS?DIR=SpotDog/Fires
  1067.  
  1068.                 The "requested directory" is SpotDot/Files
  1069.                 The "prefix" is SpotDog
  1070.  
  1071.           Note that the actual directory pointed to by the "requested
  1072.           directory" should be:
  1073.            i) relative to the FILE_DIR directory,
  1074.           ii) relative to a directory specified in BBS.CTL.
  1075.          iii) specified (using the "prefix") by a DOWNLOAD_DIR
  1076.               entry.
  1077.           See section XII for further details.
  1078.  
  1079. DIRCOLS:  Number of table columns used to display directories.
  1080.  
  1081.           Example:  BBS?DIR=SpotDog/Files&dircols=4
  1082.  
  1083.           Notes:
  1084.            *  If you have directory descriptions, you probably
  1085.               should set DIRCOLS=1.
  1086.            *  The default is 2.
  1087.            *  DIRCOLS is ignored if NOTABLE=1
  1088.  
  1089. FORCETEXT:  If =1, asume all files are "text/plain" MIME type.
  1090.  
  1091.           This is a convenient way to force the client's browser to display
  1092.           all files (such as .LST files), without the need to run a "helper
  1093.           app".  Of course, if a binary file is chosen, this will yield ugly
  1094.           and inappropriate results!
  1095.  
  1096.           Example:  BBS?DIR=SpotDog/Files&forcetext=1
  1097.  
  1098.           When FORCETEXT is used:
  1099.             with icons: A text icon (that links to a "text download")
  1100.                         and a file name (that links to a "mime-type download")
  1101.                         are displayed.
  1102.          without icons: A file name (that links to a "text download")
  1103.                         is displayed.
  1104.  
  1105.           Notes:
  1106.              * You should not use both FORCETEXT and FORCEBINARY
  1107.                (the results will be unpredictable, but not disasterous).
  1108.              * See BIN_TEXT_LINKS for an alternative to FORCETEXT and
  1109.                FORCEBINARY
  1110.  
  1111.  
  1112. FORCEBINARY:  If =1, asume all files are "application/octet-stream" MIME type.
  1113.  
  1114.           This is a convenient way to force the client's browser to save
  1115.           all files to disk (octet-stream is longhand for "binary").
  1116.  
  1117.           Example:  BBS?DIR=SpotDog/Files&forcebinary=1
  1118.  
  1119.           When FORCETEXT is used:
  1120.             with icons: A binary icon (that links to a "binary download")
  1121.                         and a file name (that links to a "mime-type download")
  1122.                         are displayed.
  1123.          without icons: A file name (that links to a "binary download")
  1124.                         is displayed.
  1125.  
  1126.           Notes:
  1127.              * You should not use both FORCETEXT and FORCEBINARY
  1128.                (the results will be unpredictable, but not disasterous).
  1129.              * See BIN_TEXT_LINKS for an alternative to FORCETEXT and
  1130.                FORCEBINARY
  1131.  
  1132.  
  1133.  
  1134. INIT:     If =1, then initialize (clear) the BBS cache.
  1135.  
  1136.                Example:  BBS?INIT=1
  1137.  
  1138. NOTABLE         : Use <PRE>, not <TABLE>
  1139.  
  1140.  
  1141. NOTABLE:  If =1, use <PRE> statements to structure display.
  1142.           If not specified (or if =0), a TABLE will be used.
  1143.  
  1144.           Example:  BBS?DIR=SpotDog/Files¬able=1
  1145.  
  1146.  
  1147.  
  1148. NOICONS: If=1, then do NOT insert small descriptive icons next to file names.
  1149.          (default is to include these icons).
  1150.  
  1151.          Example:  BBS?DIR=SpotDog/Files&noicons=1
  1152.  
  1153.  
  1154. NODIR:     If =1, then do NOT display parent and child subdirectories.
  1155.  
  1156.            Example:  BBS?DIR=SpotDog/Files&nodir=1
  1157.  
  1158. NOTIME:    If =1, then do NOT dispay creation time
  1159.  
  1160.            Example:  BBS?DIR=SpotDog/Files¬ime=1
  1161.  
  1162. NODATE:    If =1, then do NOT display date (or time)
  1163.  
  1164.            Example:  BBS?DIR=SpotDog/Files&nodate=1
  1165.  
  1166. NODESC:    If =1, then do NOT display a description.
  1167.  
  1168.            Example:  BBS?DIR=SpotDog/Files&nodesc=1
  1169.  
  1170. NOSIZE:    If =1, the do NOT display file size
  1171.  
  1172.            Example:  BBS?DIR=SpotDog/Files&nosize=1
  1173.  
  1174. NOCACHE:   If =1, then suppress the use of caching.
  1175.  
  1176.            That is, force the generation of a listing, rather then using a
  1177.            cached listing.
  1178.  
  1179.            Example:  BBS?DIR=SpotDog/Files&nocache=1
  1180.  
  1181.  
  1182. ROOTDIR:   If =1, then this request is treated as the "root" of a tree.
  1183.  
  1184.           The user can go to subdirectories, but not to the parent.  Note
  1185.           the user is allowed to go backwards after going to one of the child
  1186.           subdirectories (there is no suppression of "parent directory" links
  1187.           of child subdirectories).
  1188.  
  1189. SHORT:    If =1, then a very short form of display is used
  1190.           (no icons, no time, no date, no description).
  1191.  
  1192.            Example:  BBS?DIR=SpotDog/Files&short=1
  1193.  
  1194.  
  1195. SIZEFMT:   If =ABBREV, use nnnK or nM.  If not, use 12,345 format.
  1196.  
  1197.            Example:  BBS?DIR=SpotDog/Files&sizefmt=ABBREV
  1198.  
  1199.  
  1200. SORTBY:   Sort by NAME, EXT, SIZE, or DATE; or NOSORT.
  1201.           Default is NAME.
  1202.  
  1203.           Example:  BBS?DIR=SpotDog/Files&sortby=NAME
  1204.           Example:  BBS?DIR=SpotDog/Files&sortby=DATE
  1205.  
  1206.  
  1207.  
  1208. TIMEFMT:   If =24, use  15:03 format. If not, use 3:03p format.
  1209.  
  1210.            Example:  BBS?DIR=SpotDog/Files&timefmt=24
  1211.  
  1212.  
  1213. ZIPFILE:  A .ZIP archive to "open and display".
  1214.  
  1215.           Example:
  1216.              Display contents of GIFS.ZIP:
  1217.                 BBS?dir=foo1/wow&zipfile=GIFS.ZIP
  1218.  
  1219.           This option is typically generated by BBS when it creates
  1220.           directory listings.
  1221.  
  1222.  
  1223. =======================================================================
  1224. IX) Description of BBS initialization parameters.
  1225.  
  1226. These description are in more or less alphabetical order.  You can modify them
  1227. by editing (with your favorite text editor) the BBS.INI file.  Or, you can use
  1228. the BBS configurator -- just point your browser at:
  1229.    http://your.server/bbsconfg?
  1230.  
  1231. List of BBS.INI parameters --------------
  1232.  
  1233. The following lists the various parameters set in BBS.INI
  1234.  
  1235. Parameter Name                  Description
  1236.  
  1237. ADMIN_EMAIL       E-mail address of BBS adminstrator
  1238. AUTO_DESCRIBE     Enable "auto description" of files.
  1239. BBS_PARAM_DIR     Location of BBS support files
  1240. BYTES_NEWUSER     Bytes "credited" to new users
  1241. FILES_NEWUSER     Files "credited" to new users
  1242. BBS_SMTP_GATEWAY  The SMTP gateway to use for optional mail messages
  1243. BBSCACHE_DIR      Location of BBS "cache" files
  1244. CACHE_FILES       Maximum number of files to store in BBSCACHE_DIR
  1245. CACHE_DURATION    Lifespan of a BBS cache file
  1246. CACHE_CHECK       Check filestamp of cache file before use
  1247. CELL_SPACING      Space between table cell border and contents, in pixels
  1248. CONTINUATION_FLAG The continuation flag used in multi-line descriptions.
  1249. DEF_BIN_TEXT_LINKS The default "bin_text_links".
  1250. DEFAULT_DESCRIPTION  Used when no description is available
  1251. DEFAULT_DESCRIPTION_DIR  Used when no description is available for a directory.
  1252. DEFAULT_DATEFMT   Default format for displaying date information
  1253. DEFAULT_RATIO     Default file downloads/file uploads ratio
  1254. DEFAULT_BYTE_RATIO Default byte downloads/file uploads ratio
  1255. DESCRIPTION_FILE  Name of file(s) that contains descriptions.
  1256. DEFAULT_SORT_TYPE The default sort type.
  1257. DESCRIPTION_TEXT  Descriptions displayed as HTML, or as <PRE> text
  1258. DESCRIPTION_TEXT_LENGTH Control line length of <PRE> text descriptions.
  1259. DESCRIPTION_TEXT_LENGTH_1LINE Controls format of 1-line descriptions
  1260. EXCLUSION_FILE    Name of file(s) contains file exclusion information.
  1261. FILE_DIR          Fully qualified name of the (default) root of the BBS.
  1262. GET_Z_ZIP_DESCRIPTION Extract -z description from .ZIP files
  1263. HEADER_FILE       Name of file(s) containing header (displayed to client)
  1264. FOOTER_FILE       Name of file(s) containing footer (displayed to client)
  1265. HEADER_TEXT       Display header as HTML or as <PRE> text
  1266. FOOTER_TEXT       Display footer as HTML or as <PRE> text
  1267. ICONS.1 ..        List of custom icons for specific files/directories.
  1268. ICONS.N
  1269. IMAGEPATH         Location of .GIF files
  1270. INCOMING_DIR      Default location to store uploaded files
  1271. INCLUSION_MODE_FILE  Name of "inclusion mode" file
  1272. MUST_WAIT         Number of days "too many downloads" clients must wait
  1273. OWN_NAME_PRIVILEGE  Add a !username to client's privilege list.
  1274. OWN_UPLOAD_DIRECTORY   Default "root" of own upload directory (used by BBSNEWU)
  1275. OWN_DOWNLOAD_DIRECTORY Default "root" of own download directory  ("   "    "  )
  1276. OWN_FLAG          Default "prefix" for own download directory (" "    "  )
  1277. PRIV_RATIO.!name1 List of "privilege specfic" upload/download ratios.
  1278. PRIV_RATIO.!nameN
  1279. PRIV_WEIGHT.!name1 List of "privilege specfic" download weights.
  1280. PRIV_WEIGNT.!nameN
  1281. SEND_ALERT        Send an e-mail alert (via BBS_SMTP_GATEWAY) to ADMIN_EMAIL.
  1282. TABLE_BORDER      Width of table border (or 0 for no border)
  1283. UPLOAD_MAXSIZE    Maximum size, in kbytes, of uploadable files.
  1284. UPLOAD_MINFREE    Minimum disk space free, in kbytes, after upload.
  1285. UPLOAD_QUICK_CHECK  Check upload directory for matching name before uploading.
  1286. USE_COOKIES       Use "cookies" to send username/pwd information.
  1287. USERLOG_DIR       Directory containing user logs (username,password,history,etc)
  1288. USE_SERVERNAME    Colloquial name of your server
  1289. WRITE_DETAILS     Write details to the user log files
  1290. ZIP_HEADER_FILE   Header file(s) to use in ZIP expansions
  1291. ZIP_DESCRIPTOR_FILE Alternate for FILE_ID.DIZ file
  1292.  
  1293.  
  1294. Detailed Descriptions ---- (in more or less alphabetical order)  -------------
  1295.  
  1296. ADMIN_EMAIL
  1297.  
  1298.     The e-mail address of the BBS administrator.  Used when SRE-Filter sends
  1299.     e-mail alerts (as when a successful upload occurs).
  1300.  
  1301.   Example: ADMIN_EMAIL='admin@foo.bar.net'
  1302.  
  1303.  
  1304. AUTO_DESCRIBE
  1305.  
  1306.   Controls whether BBS should attempt to create an "automatic description" for
  1307.   files that do not have a explicit description.
  1308.   If =0, auto describe is NOT attempted.
  1309.   If >0, then auto describe is attempted.
  1310.        Auto describe constructs a description from:
  1311.          *  <TITLE> and <META EQUIV NAME="CONTENTS">  headers in HTML files
  1312.          *  -z comments, or FILE_ID.DIZ files in .ZIP files
  1313.          *  The first several hundred bytes in text files
  1314.        For other types of files, automatic descriptions are NOT created.
  1315.  
  1316.   Notes:
  1317.  
  1318.     *  The value of auto_describe controls the maximum length of
  1319.        the description.
  1320.  
  1321.          Examples: AUTO_DESCRIBE=200
  1322.                  -- a max 200 character description is created
  1323.  
  1324.                    AUTO_DESCRIBE=0
  1325.                   -- no automatic description is attempted
  1326.  
  1327.     *  If AUTO_DESCRIBE=1 is used, then a max 120 character description is
  1328.        generated.
  1329.  
  1330.     *  The description can be broken into seperate lines, using the
  1331.        DESCRIPTION_TEXT_LENGTH variable (or using a value of 30, if
  1332.        DESCRIPTION_TEXT_LENGTH=0) -- see DESCRIPTION_TEXT for
  1333.        details.
  1334.  
  1335. BBS_PARAM_DIR
  1336.  
  1337.   Directory containing BBS control, etc. files.  If a relative directory is
  1338.   entered, it is assumed to be relative to the GoServe working directory
  1339.  
  1340.   Example:  bbs_param_dir='BBSDATA'
  1341.  
  1342.   If the GoServe working directory is E:\GOSERVE, the above example
  1343.   refers to  E:\GOSERVE\BBSDATA.
  1344.  
  1345.  Notes: bbs_param_dir\bbs.ctl contains the "access control" and "directory
  1346.         privileges" information.
  1347.         bbs_param_dir\bbs.cnt contains counts (by file) of  downloads
  1348.         bbs_param_dir\upload.log contains record of all uploads
  1349.  
  1350.  
  1351. BYTES_NEWUSER and FILES_NEWUSER
  1352.  
  1353.   Bytes and file "downloads" granted to new users.  This lets them
  1354.   have a first shot at the system.
  1355.  
  1356.   Examples:
  1357.      bytes_newuser=10000
  1358.      files_newuser=1
  1359.  
  1360.  
  1361. BBS_SMTP_GATEWAY
  1362.  
  1363.   The valid IP address of an SMTP Gateway.  This is used if you want
  1364.   to send e-mail alerts to the WEB_ADMIN address (see below) when succesful
  1365.   file uploads occur.
  1366.  
  1367.    Example: BBS_SMTP_GATEWAY='MAIL.OURSITE.NET'
  1368.  
  1369.    Note: this is NOT necessarily the same as the the SRE-Filter SMTP_GATEWAY
  1370.          variable -- though it can be the same.
  1371.  
  1372.  
  1373. BBSCACHE_DIR
  1374.   The directory to store the BBS cache files.  THIS SHOULD BE A DEDICATED
  1375.   DIRECTORY -- since it will fill up with files, and since BBS occasionally
  1376.   clears it out.  If a relative directory is given (not starting with a drive
  1377.   letter or a /), it is assumed to be relative to the BBS_PARAM_DIR directory.
  1378.  
  1379.   Example:  BBSCACHE_DIR='BBSCACHE'
  1380.  
  1381.  
  1382. CACHE_FILES
  1383.   The size of the BBS cache, in files.  After this number of files have been
  1384.   stored (with each file representing a unique request string), BBS will
  1385.   delete the oldest files.
  1386.  
  1387.   Example: Cache_files=100
  1388.  
  1389.   Note: to suppress caching, set CACHE_FILES=0
  1390.  
  1391.  
  1392.  
  1393. CACHE_DURATION
  1394.   This is the number of days (fractional days are allowed) that a BBS cache
  1395.   will be valid for.  Thus, if a cached "request" is more then CACHE_DURATION
  1396.   days old, it will not be used (in fact, it will be replaced).
  1397.  
  1398.   Example: cache_duration=0.5
  1399.  
  1400.   Note: a tiny (say 0.000001) cache duration is equivalent to a
  1401.         CACHE_FILES value of 0.
  1402.  
  1403.  
  1404. CACHE_CHECK
  1405.   Before using a cache entry, BBS can perform a simple check for any file
  1406.   modifications (either to the files in a directory, or to the .ZIP file
  1407.   chosen for expansion).  If modifications are detected, the cache is not used
  1408.   (in fact, it will be replaced).
  1409.  
  1410.   To enable this check, set CACHE_CHECK=1.
  1411.  
  1412.   Example: cache_check=1
  1413.  
  1414.   Notes:
  1415.       * BBS uses a simple CRC on file dates.  This should find most, but not
  1416.         NOT all changes.  For example, changes in "generic" FOOTER and HEADER
  1417.         files will not be detected.
  1418.       * Use of CACHE_CHECK will slow throughput down somewhat.  You may want
  1419.         to consider using the BBSCACHE daemon instead.
  1420.       * The Toronto Virtual File System (TVFS) has a bug which may impact the
  1421.         use of CACHE_CHECK (the effect of this bug is to cause BBS to over-
  1422.         refresh the cache, leading to slower throughput).
  1423.         If you are running TVFS, you might want to set CACHE_CHECK=0.
  1424.  
  1425.  
  1426. CELL_SPACING
  1427.  
  1428.   Space between cell border and cell content (in a table), in pixels.
  1429.   Set to 0 for "no extra spacing".  This is useful as an alternative
  1430.   to the TABLE_BORDER option (helps visually offset rows of the table).
  1431.  
  1432.   Example: cell_spacing=2
  1433.  
  1434.  
  1435. CONTINUATION_FLAG
  1436.  
  1437.    Continuation flag is a character string used to indicate a "continuation"
  1438.    line in the description_file.
  1439.  
  1440.    Example: continuation_flag=','
  1441.  
  1442.    Another popular example is ' |'  (space followed by a |).
  1443.  
  1444.    Note: if your continuation flag starts with a space, and has a non-space
  1445.          second character, then BBS will match the "first space in the
  1446.          continuation_flag" to an arbitrary number (>0) of spaces in the
  1447.          description file.  For example, if continuation_flag=' |',
  1448.          it WILL match
  1449.  |  first line of description
  1450.       |  second line
  1451.     | third line
  1452.  
  1453.          However, it will NOT match
  1454. | bad line.
  1455.       (note that in this example, the | is the first character in the line)
  1456.       For this case, you MUST set the continuation flag ='|'. However,
  1457.       if continuation_flag='|', the prior 3 examples will NOT be matched.
  1458.  
  1459.    Notes
  1460.      * The SRCHINDX add-on also can read these "multi-line description
  1461.        files" (that is, it understands continuation flags)
  1462.        If you intend to "share" description files between BBS and SRCHINDX,
  1463.        please note that SRCHINDX is not as sophisticated as BBS:
  1464.           it treats any line, whose first non-space character is equal to
  1465.           the stripped-of-spaces continuation flag, as a "continuation line".
  1466.      * If you are using INCLUSION_MODE_FILEs, the CONTINUATION_FLAG must start
  1467.        with a space.
  1468.  
  1469.  
  1470. DEF_BIN_TEXT_LINKS
  1471.  
  1472.   The "default BIN_TEXT_LINKS" is used to control whether multiple download
  1473.   options are to be included for each file.  That is, when 
  1474.   DEF_BIN_TEXT_LINKS is enabled (is set to 1), then each file
  1475.   will have three links: a text download link, a binary
  1476.   download link, and a "mime-type" download link.  If set to 0,
  1477.   only one link is used (the mime type link).
  1478.  
  1479.   Note: this setting can be overridden by the BIN_TEXT_LINKS request
  1480.         line option.
  1481.  
  1482.   Example:        DEF_BIN_TEXT_LINKS=1
  1483.  
  1484.  
  1485. DEFAULT_DESCRIPTION:
  1486.  
  1487.   The "default description".  Used if no description for a file can
  1488.   be found in the (appropriate) description_file.
  1489.   Can be useful as a filler when tables are used to display descriptions.
  1490.  
  1491.   Example: default_description='...'
  1492.  
  1493.  
  1494.  
  1495. DEFAULT_DESCRIPTION_DIR:
  1496.  
  1497.   The "default description" for directory entries.
  1498.   Used if  no description can be found,  for a directory, in the
  1499.   (appropriate) description_file.
  1500.  
  1501.   Example: default_description=' '
  1502.  
  1503.  
  1504. DEFAULT_DATEFMT
  1505.  
  1506.   The default "date format" to use.  This is used if a DATEFMT option
  1507.   is not included in the URL. See the description of the DATEFMT
  1508.   parameter (in section VIII) for a list of acceptable values.
  1509.  
  1510.   Note: if a bad value of DEFAULT_DATEFMT is used, BBS wil use
  1511.         a value of 'N' (i.e.; 15 Feb 1994)
  1512.  
  1513.  
  1514. DEFAULT_RATIO and DEFAULT_BYTE_RATIO
  1515.  
  1516.    The default download/upload ratios.
  1517.       The default_ratio is for files,
  1518.       The default_byte_ratio is for bytes.
  1519.    These are assigned to a user when they "register".
  1520.  
  1521.    In general: if either are exceeded, downloads are not permitted.
  1522.  
  1523.    This ratio can be overridden through the use of "privilege specific"
  1524.    ratios.  For further details, see the description of the PRIV_RATIO.!
  1525.    parameters, or see section VI of this document.
  1526.  
  1527.    Notes:
  1528.       If both values are 0, it means "no limit" (unless overridden).
  1529.       If one is -1 means, it means "downloads denied" (unless overridden).
  1530.       If both values are very high (say, 1000000), it effectively means
  1531.       "no limit" (and can NOT be overridden).
  1532.  
  1533.    Examples:
  1534.       default_ratio=0
  1535.       default_byte_ratio=0
  1536.  
  1537.       default_ratio=10
  1538.       default_byte_ratio=100
  1539.  
  1540.       default_ratio=-1
  1541.  
  1542.  
  1543. DESCRIPTION_FILE
  1544.  
  1545.    The "description file".  It contains short descriptions of each
  1546.    file in the directory.  It also can contain descriptions of "directories".
  1547.    BBS looks for the description_file in two locations: the "directory
  1548.    being examined", and the BBS_PARAM_DIR directory.  If both places contain
  1549.    a description file, the results are concatenated. Thus, a description
  1550.    may come from an "own directory" description file, or from the "default"
  1551.    (BBS_PARAM_DIR directory) description file.
  1552.    Note that if a match occurs in both files, the "own directory" entry
  1553.    is used.  However, exact matches in the BBS_PARAM_DIR version are used
  1554.    instead of "wildcard" matches in the "own directory" version.
  1555.  
  1556.    Example: description_File='BBS.DSC'
  1557.  
  1558.  
  1559. DEFAULT_SORT_TYPE
  1560.      The default "sortby" critieria (used to sort the list of files).
  1561.      The options are the same as for the SORTBY request option.
  1562.      By default, files will be sorted by Name.
  1563.  
  1564.      Example: DEFAULT_SORT_TYPE='NAME'
  1565.  
  1566.  
  1567. DESCRIPTION_TEXT
  1568.  
  1569.   This is used to control how descriptions are displayed.  When =1,
  1570.   <PRE> is used to display descriptions "as they are written". Otherwise,
  1571.   descriptions are displayed as regular HTML text (i.e.; line breaks
  1572.   are ignored).
  1573.  
  1574.    Example: DESCRIPTION_TEXT=1
  1575.  
  1576.  
  1577. DESCRIPTION_TEXT_LENGTH
  1578.  
  1579.   This is used to control how "text" style descriptions are displayed.
  1580.   When =0, it is ignored. When >0, line lengths are limited to the
  1581.   selected value (<BR> elements are inserted to create these line lengths).
  1582.  
  1583.    Example: DESCRIPTION_TEXT_LENGTH=25
  1584.             (lines in the description will be approximately 25 characters
  1585.              long, with breaks inserted between words)
  1586.  
  1587.  
  1588. DESCRIPTION_TEXT_LENGTH_1LINE
  1589.  
  1590.    When set =1, this signals that the DESCRIPTION_TEXT_LENGTH variable only
  1591.    be applied to 1 line descriptions.  That is, multi-line descriptions will
  1592.    be left "as is", but 1-line descriptions will be broken up.
  1593.  
  1594.   Example: DESCRIPTION_TEXT_LENGTH_1LINE=0
  1595.  
  1596. EXCLUSION_FILE
  1597.  
  1598.   The "exclusion file" contains file names (and subdirectory names)
  1599.   that will NOT be displayed.
  1600.   The EXCLUSION_FILE is assumed to be in the "requested directory".
  1601.   If not found, the  BBS_PARAM_DIRECTORY directory is searched.  Note that
  1602.   these are NOT cumulative --  the first "exclusion_file" found is used.
  1603.  
  1604.   Example:  exclusion_file='BBS.EXC'
  1605.  
  1606.   Notes:
  1607.     *  the default BBS.EXC file contains further details on the use of
  1608.        exclusion files.
  1609.     *  the "exclusion file", "header file",  "description file", etc.
  1610.        are NOT automatically excluded!
  1611.  
  1612. FILE_DIR
  1613.  
  1614.   Fully qualified root directory of the "bbs tree".
  1615.   This is the default "root" of requested directories (where a request
  1616.   is accomplished by a "DIR=xxx" option in the request string).
  1617.   Note that information in the BBS.CTL file, or DOWNLOAD_DIR entries in the
  1618.   user's user log file, may override this "default".
  1619.  
  1620.   Example:  file_dir='g:\goserv\BBSFILES'
  1621.  
  1622.   Note: Section XII of this document, and the default BBS.CTL file,  contain
  1623.         further descriptions of how the "root directory" may be set on a
  1624.         requsted-directory specific basis.
  1625.  
  1626.  
  1627. GET_Z_ZIP_DESCRIPTION:
  1628.  
  1629.     If =1, then the internal zip file description is displayed
  1630.     (if it is available) using a <PRE> format.
  1631.  
  1632.     Example:   GET_Z_ZIP_DESCRIPTION=1
  1633.  
  1634.  
  1635.     Note: The internal zip file description can be modified by using
  1636.           ZIP.EXE's -z switch.
  1637.  
  1638.  
  1639. HEADER_FILE and FOOTER_FILE
  1640.  
  1641.   The "header file" and "footer file".  The header file is displayed at the
  1642.   top of the "directory listing", the footer file at the bottom.
  1643.   They are both  assumed to be in the requested directory.
  1644.   If  not available, then the BBS_PARAM_DIRECTORY directory is searched.
  1645.   If not in either location, no footer is displayed, and a generic header
  1646.   is displayed.
  1647.  
  1648. **  Important Note: You MUST include a <BODY> element in your HEADER_FILE. **
  1649.  
  1650.  
  1651.   Other notes:
  1652.      *  The BBS.HDR and BBS.FTR files that are shipped with BBS contain
  1653.         additional details on the use of HEADER and FOOTER  files.
  1654.  
  1655.  Examples: header_file="BBS.HDR"
  1656.            footer_file="BBS.FTR"
  1657.  
  1658.  
  1659. HEADER_TEXT and FOOTER_TEXT
  1660.  
  1661.   Flags (if set to 1) which signal "display the HEADER and FOOTER
  1662.   files as text" --  text files will be  displayed with the
  1663.   help of <PRE> elements.
  1664.  
  1665.   Examples: header_text=1
  1666.             footer_text=1
  1667.  
  1668.  
  1669. ICONS.n
  1670.  
  1671.    A list of entries that are used to provide "custom" icons for selected
  1672.    files.  This list should contain entries that look like:
  1673.         FILENAME.EXT    <IMG SRC="...">
  1674.    where filename.ext can contain the * wildcard character.
  1675.    Note that you can have as many entries as you want, with n going from
  1676.    1 (the first) to N (the last entry).  You should also have an N+1 entry
  1677.    set to 0.
  1678.  
  1679.    Examples (each example should be on one line; we split them onto two
  1680.              lines JUST for 80 character display purposes):
  1681.      icons.1='*.CMD   <IMG Src="/imgs/blueball.gif"
  1682.                             height=24 width=24 alt="[cmd]" >'
  1683.      icons.2='PERSONAL.HTM  <IMG src="/imgs/mypic.gif"
  1684.                                  height=30 width=30 alt="[me]">'
  1685.      icons.3='\USERS\BOB   <img src="/usr/pics/bobby.gif
  1686.                                 height=22 width=22  alt="[bobs]">'
  1687.      icons.4 =0
  1688.  
  1689.    Notes:
  1690.       * If a file does not match one of these ICONS.n entries, one of the
  1691.            generic icons will be used.
  1692.       * In the above example, icons.3 is used for a directory -- don't forget
  1693.         that you MUST preceed "directory" entries with a \ (or a /).
  1694.  
  1695.  
  1696. IMAGEPATH
  1697.  
  1698.   Directory, relative to the Goserve DATA directory (NOT the BBS_PARAM_DIR
  1699.   directory), that contains the file-type icons (.gif files).
  1700.  
  1701.   Example:   imagepath="imgs/"
  1702.  
  1703.     Note that a leading / will be ignored -- it does NOT signal a "fully
  1704.     qualified" directory
  1705.  
  1706. INCOMING_DIR
  1707.  
  1708.    Default directory for file uploads.
  1709.    If a relative directory is used, it is assumed to be relative to the
  1710.    BBS_PARAM_DIR directory
  1711.  
  1712.    This is used if there is no (matching) UPLOAD_DIR parameter specified in a
  1713.    given user's .IN file.
  1714.  
  1715.    If a "matching" UPLOAD_DIR parameter does exist, then the INCOMING_DIR is
  1716.    ignored. Note that this UPLOAD_DIR parameter should be a fully qualified
  1717.    directory.
  1718.  
  1719.  
  1720.    Example:    If:
  1721.                   UPLOAD_DIR: up1  d:\private\JOE\STUFF
  1722.                   INCOMING_DIR = 'newfiles'
  1723.                   BBS_PARAM_DIR = 'e:\bbs'
  1724.               Then uploads to up1/foo.bar will map to:
  1725.                  d:\private\joe\stuff\foo.bar
  1726.               And uploads to up2/foo.bar will map to
  1727.                  e:\bbs\newfiles\up2\foo.bar
  1728.  
  1729. INCLUSION_MODE_FILE
  1730.  
  1731.  The INCLUSION_MODE_FILE contains file names and subdirectories that will be
  1732.  displayed, as well as comments and descriptions.  Only these files and
  1733.  directories will be displayed (with possible exclusions due to the
  1734.  EXCLUSION_FILE).
  1735.  
  1736.  Examples:
  1737.      INCLUSION_MODE_FILE=0
  1738.           Do not use an inclusion_mode_file.
  1739.     INCLUSION_MODE_FILE='FILES.BBS'
  1740.  
  1741.  For further details on the use of the INCLUSION_MODE_FILE, see section IIa of
  1742.  this document.
  1743.  
  1744.  
  1745. MUST_WAIT
  1746.  
  1747.    If default_ratio is exceeded, client must wait this many days before he can
  1748.    download 1 more file (after this 1 download, the "must-wait clock
  1749.    restarts").  Fractional days are allowed.
  1750.  
  1751.    Example: must_wait=0.1
  1752.  
  1753. OWN_NAME_PRIVILEGE
  1754.  
  1755.     If =1, include a !username in the user's privilege list.
  1756.     This can facilitate assignation of privileges on a user specific basis.
  1757.     Note that a ! is appended to the username-- this is done as a security
  1758.     precaution (to preclude a randomly chosen username from matching
  1759.     a privilege; since usernames can NOT start with !).
  1760.  
  1761.    Example:  own_name_privilege=1
  1762.     (if the user is JOEY, then a !JOEY privilege is added to his
  1763.     privilege list).
  1764.  
  1765. OWN_DOWNLOAD_DIRECTORY
  1766.  
  1767.    The OWN_DOWNLOAD_DIRECTORY is used by the BBS new user registration facility
  1768.    (BBSNEWU.HTM).  It should either equal 0  or " " (in which cases it is
  1769.    ignored), or it should equal an existing fully qualified directory.
  1770.  
  1771.    When a new user is registered (and if OWN_DOWNLOAD_DIRECTORY<>0), a
  1772.    Download_dir entry will be added to the users's .IN file.
  1773.  
  1774.    For example,
  1775.        if OWN_FLAG='PERSONAL' (see below),
  1776.        the username is JOEY
  1777.        and OWN_DOWNLOAD_DIRECTORY='D:\BBS2
  1778.     then the following will be added to JOEY.IN
  1779.         Download_dir: PERSONAL  D:\BBS2\JOEY
  1780.  
  1781.   Notes:
  1782.        * If it doesn't exist, D:\BBS\JOEY will be created
  1783.        * A request for dir=/personal will yield a  listing of the contents of
  1784.          D:\BBS2\JOEY
  1785.        * See section XII for further details
  1786.  
  1787. OWN_FLAG
  1788.  
  1789.   The OWN_FLAG is used by the BBS new user registration facility
  1790.   (BBSNEWU.HTM).  It's used in conjunction with the OWN_DOWNLOAD_DIRECTORY
  1791.   and OWN_UPLOAD_DIRECTORY.
  1792.  
  1793.   Example: OWN_FLAG='PERSONAL'
  1794.  
  1795.  
  1796. OWN_UPLOAD_DIRECTORY
  1797.  
  1798.    The OWN_UPLOAD_DIRECTORY is used by the BBS new user registration facility
  1799.    (BBSNEWU.HTM).  It should either equal 0 (in which case it is ignored), or
  1800.    equal an existing fully qualified directory.
  1801.  
  1802.    When a new user is registered (and if OWN_UPLOAD_DIRECTORY<>0), then an
  1803.    Upload_dir entry will be added to the user's user log file.
  1804.  
  1805.    For example,
  1806.        if OWN_FLAG='PERSONAL'
  1807.        the username is JOEY
  1808.        and OWN_UPLOAD_DIRECTORY='D:\NEWUP'
  1809.     then the following will be added to JOEY.IN
  1810.        Upload_dir: PERSONAL D:\NEWUP\JOEY
  1811.  
  1812.   Notes:
  1813.        * Uploads to PERSONAL/ will be placed in D:\NEWUP\JOEY (rather
  1814.          then in the PERSONAL subdirectory of the INCOMING_DIR).
  1815.        * See section XII for further details
  1816.  
  1817.  
  1818. PRIV_RATIO.!
  1819.  
  1820.     The PRIV_RATIO.! entries are used to assign a download/upload ratio on
  1821.     a "privilege specific" basis.  These are used in conjunction with the
  1822.     user's  default ratio (set in the RATIO: entry of the user log file),
  1823.     and the "required privileges" (set in bbs.ctl on a directory specific
  1824.     basis).
  1825.  
  1826.     Note that these parameters are a little different then other
  1827.     "stem" variables -- you do not put a number after the ".".
  1828.     Instead, put a !, followed by a "privilege name".
  1829.  
  1830.     The value of these parameters should be a string containing two
  1831.     numbers, the file ratio and the byte ratio.
  1832.  
  1833.     Example (first number is file, second number is byte):
  1834.      PRIV_RATIO.!PREFERRED='50 1000'
  1835.      PRIV_RATIO.!NEWGUY='10 50 '
  1836.  
  1837.     For more details on BBS's use of "privileges", please see section VI.
  1838.  
  1839. PRIV_WEIGHT.!
  1840.  
  1841.    These are similar to the PRIV_RATIO.! variables.  They are used to set a
  1842.    "privilege specific" download weight.  Lower download weights mean that
  1843.    a download will result in a smaller number of bytes being added to a
  1844.    users "downloaded bytes count" (and a smaller number of files).
  1845.    Note that the default weight is (not suprisingly) 1.0.
  1846.  
  1847.    Example:  PRIV_WEIGHT.!PERSONAL='0.5'
  1848.      Requests to a directory for which a "PERSONAL" privilege applies
  1849.      (as set in BBS.CTL or in a download_dir entry) will use a
  1850.      download-weight of 0.5.
  1851.  
  1852.  
  1853. SEND_ALERT
  1854.  
  1855.    Set this to 1 to instruct BBS to send an e-mail alert to the WEB_ADMIN
  1856.    (see below), via the SMTP_GATEWAY (see above) whenever a succesful
  1857.    file upload occurs.
  1858.  
  1859.     Example:  SEND_ALERT=1
  1860.  
  1861.  
  1862. TABLE_BORDER
  1863.  
  1864.   Width of borders, if table is used. Set to 0 for "no border".
  1865.   Note: see the cell_spacing option for an alternative method
  1866.         of visually delineating rows in a table.
  1867.  
  1868.   Example: table_border=1
  1869.  
  1870.  
  1871. UPLOAD_MAXSIZE and UPLOAD_MINFREE
  1872.  
  1873.   UPLOAD_MAXSIZE: Maximum size, in kbytes, of uploadable files.
  1874.   UPLOAD_MINFREE: Minimum disk space free, in kbytes, after upload.
  1875.  
  1876.   Examples: upload_maxsize=5000
  1877.            upload_minfree=20*1000
  1878.  
  1879.   Note: This is NOT THE SAME as the SRE-Filter UPLOAD_MAXSIZE and
  1880.         UPLOAD_MINFREE parameters.
  1881.  
  1882. UPLOAD_QUICK_CHECK
  1883.    To speed up "pre-existing file" UPLOAD error responses, BBSUP can
  1884.    perform an early check to see if the selected filename already
  1885.    exists.  To do this, set upload_quick_check=1.
  1886.  
  1887.    Although speeding up "error response" a bit, this requires that:
  1888.        No "alternative" file name is used -- the "client's own" filename
  1889.        is used, and it is to be placed in the "root" of the INCOMING_DIR
  1890.        directory.  If you use "alternative file names", you should
  1891.        set UPLOAD_QUICK_CHECK=0.
  1892.  
  1893.    Furthermore, if any UPLOAD_DIR entries have been specified, then
  1894.    UPLOAD_QUICK_CHECK is disabled.
  1895.  
  1896.  
  1897. USE_COOKIES
  1898.  
  1899.    BBS will attempt to use "cookies" (request header information) to
  1900.    store the username and password information.  To suppress this
  1901.    feature, set USE_COOKIES=0; to enable it set USE_COOKIES=1.
  1902.  
  1903.    The primary advantage of cookies is that the username and password
  1904.    will not be displayed on the URL -- this gives a little more
  1905.    security to the user.  The primary disadvantage is that it requires
  1906.    more cache files.
  1907.  
  1908.       Example: USE_COOKIES=1
  1909.  
  1910.   Notes:
  1911.      Many older browsers do not understand cookies.  BBS can recognize
  1912.      this, and will use the request-string-based username/password technique.
  1913.  
  1914.      When cookies are being used, otherwise identical requests will result
  1915.      in different "cache files" on the basis of whether the browser is
  1916.      cookie-capable.
  1917.  
  1918.      The request-string-based technique is still used on the first call to
  1919.      the BBS (that is, from BBSHELLO.HTM).  To remove this last bit
  1920.      of exposure, you can try to use POST method in your
  1921.      welcoming FORM (see BBSHELLO.HTM  for an example).
  1922.  
  1923.      For further discussion of "authorization modes", see section II of
  1924.      this document.
  1925.  
  1926.  
  1927.  
  1928. USERLOG_DIR
  1929.  
  1930.    Directory containing BBS "user log" files.
  1931.    If a relative directory is entered, it is assumed to be relative to the
  1932.    BBS_PARAM_DIR directory.
  1933.  
  1934.    Example:  userlog_dir='USERLOG'
  1935.  
  1936.    Notes
  1937.      * "user log files" have names of UserName.IN.
  1938.      * for further discussion of "user log" files, see section
  1939.        III of this document.
  1940.  
  1941.  
  1942. USE_SERVERNAME
  1943.  
  1944.    Optional.  If available, this value will be used in $SERVERNAME
  1945.    string replacements in the HEADER_FILE, ZIP_HEADER_FILE, and FOOTER_FILE.
  1946.    If =0, then look up the server name (from GoServe if available,
  1947.    otherwise from OS/2).
  1948.  
  1949.     Examples:
  1950.         use_servername=0
  1951.         use_servername='The Free-to-all Project Web Site '
  1952.  
  1953.  
  1954. WRITE_DETAILS
  1955.  
  1956.    Write request info to the user-log file.
  1957.    If =1, "request specific" information is recorded in the user's .IN
  1958.    files.  This includes the name of the file uploaded, and
  1959.    the date of transaction.
  1960.    If 0, just the "upload counts", or  "download counts", are augmented.
  1961.  
  1962.    Examples: write_details=1
  1963.  
  1964.  
  1965. ZIP_HEADER_FILE
  1966.   Similar to the HEADER_FILE, this is displayed at the top of
  1967.   "ZIP file extraction" listings.
  1968.   The ZIP_HEADER_FILE is  assumed to be in the directory
  1969.   being displayed. If not, then the  bbs_param directory is searched.
  1970.   If not in either directory, a generic header is displayed.
  1971.  
  1972.   Notes:
  1973.     *  You MUST include a <BODY> element in your ZIP_HEADER_FILE.
  1974.     *  A ZIP_HEADER_TEXT_ONLY option is NOT currently available (that is, the
  1975.        ZIP_HEADER_FILE is assumed to be HTML).
  1976.     *  A ZIP_FOOTER_FILE is NOT currently available.
  1977.  
  1978.   Example: zip_header_file="BBSZIP.HDR"
  1979.  
  1980. ZIP_DESCRIPTOR_FILE
  1981.  
  1982.   The "within .ZIP file" header file. If found (in a .ZIP file)
  1983.   it will be extracted and displayed at the top of the document
  1984.   (along with -z comments and the ZIP_HEADER_FILE).
  1985.  
  1986.   Examples: zip_descriptor_file='FILE_ID.DIZ'
  1987.  
  1988.   Notes:
  1989.    * ZIP_DESCRIPTOR_FILE should NOT contain path info
  1990.  
  1991.    * Display of ZIP file contents is more rudimentary then directory
  1992.      displays; with no file exclusion, no file descriptions, and <PRE>
  1993.      used instead of TABLES.
  1994.  
  1995.  
  1996. ========================================================================
  1997. X) Creating Use Statistics
  1998.  
  1999. The BBSSTAT.CMD file, that you copied to your USERLOG_DIR directory, can be
  2000. used to generate some simple usage statistics.  BBSSTAT.CMD should be run from
  2001. an OS/2 command prompt -- it is NOT an SRE-Filter add-on!
  2002.  
  2003. You will be asked to provide a few pieces of information:  the number of
  2004. entries to display, and an output file.  For example, if you choose 10
  2005. entries, then the 10 "busiest" users (for each of several variables) are
  2006. listed.
  2007.  
  2008. The output file will contain these lists as plain text (no HTML elements).
  2009. You may want to:
  2010.      a) modify it (say, with a  few HTML tags),
  2011.      b) copy it to your GoServe data directory.
  2012.      c) include a link to it in BBSHELLO.HTM (or whatever you use as your BBS
  2013.         "welcome" page).
  2014.  
  2015. The variables reported are:
  2016.        File downloads, file uploads, byte downloads, byte uploads,
  2017.        download/upload ratio for files and for bytes,
  2018.        and the most recent users.
  2019. In addition, the total (weighted) number of files (and bytes)
  2020. downloaded (and uploaded), and the number of users in the
  2021. last m days, are reported.
  2022.  
  2023. ========================================================================
  2024. XI)  Using the Caching Daemom
  2025.  
  2026. The BBS caching daemon, BBSCACHE.CMD, can be used to prevent the BBS cache
  2027. from becoming seriously out of date.  To use this, simply open up an OS/2
  2028. window, change directories to your GoServe working directory (where BBS.CMD,
  2029. BBSCACHE.CMD, etc.  are installed), and run the BBSCACHE.CMD program.
  2030.  
  2031. There is one important consideration when using BBSCACHE.  BBSCACHE requires a
  2032. "reference" cache-index -- it uses this reference as a list of "request
  2033. strings" whose output will be cached.
  2034.  
  2035.    The notion is that the administrator will save the BBSCACHE.IDX file
  2036.    (the cache index file) after a representative time period.  Alternatively,
  2037.    she could issue an BBS?INIT=1 request, and then meticulously browse the
  2038.    most important (or most frequently demanded) file areas (and .ZIP files).
  2039.    If this administrator-intensive approach is adopted, note that "cookie" and
  2040.    "non-cookie" versions are cached separately -- you might want to hit your
  2041.    favorite file areas with both kinds of browsers.
  2042.  
  2043. Regardless of the source of this "reference" cache index; it should be saved
  2044. in the BBS_PARAM_DIR directory -- and NOT in the BBSCACHE_DIR directory.  One
  2045. convenient way to do this is by running BBSCACHE.CMD -- it will ask if you
  2046. want to save your cache index.  Of course, once you've saved a good
  2047. cache-index, the next time you run BBSCACHE.CMD (say, after shutting down your
  2048. machine for maintenance), you probably do NOT want to "save the current cache
  2049. index" again.
  2050.  
  2051. After asking if you want to save the current cache index, BBSCACHE will ask
  2052. you to provide the name of the cache index you wish to use.
  2053.    If you have just "saved" the current cache index, you'll probably
  2054.    want to use it (it's the default)!
  2055. It will then ask for a frequency of  cache refreshes (in minutes) --
  2056. or you can tell BBSCACHE to do it "just once" (but don't forget to
  2057. re-run BBSCACHE in a timely fashion).
  2058.  
  2059. BBSCACHE will then enter a  "scan, refresh, sleep" loop:
  2060.   1) Scan through the lists of "request strings" stored in the cache-index you
  2061.      selected
  2062.  2)  For each "request string", generate a cache file containing the correct
  2063.      output.
  2064.   3) The working cache-index is refreshed.  Note that this is NOT the
  2065.      same as the cache-index you selected (although it may contain
  2066.      similar information, especially if you "saved the current cache index").
  2067.   4) BBSCACHE sleeps for the specified number of minutes.
  2068.   5) Jump to step 1.
  2069. Note: If you selected "do it just once", BBSCACHE will exit after step 3.
  2070.  
  2071.  
  2072. ========================================================================
  2073. XII) Using "own" upload and download directories
  2074.  
  2075. By default, BBS will assume that all requested downloads are "relative" to
  2076. the FILE_DIR directory.  Similarly, all uploads will be placed into the
  2077. INCOMING_DIR.  While this may be adequate for most installations, there may
  2078. be cases where "customization" is desired. In order to fill this need,
  2079. you should consider the use of "own" upload and download directories.
  2080.  
  2081. A point about more general control methods is worth mentioning:
  2082.  
  2083.    If you've read this far, you are aware of the use of privileges, in
  2084.    conjunction with the BBS.CTL file, to control access to directories.  In
  2085.    many cases, the use of BBS.CTL may be more then adequate (especially when
  2086.    you have a few large classes of users).  In other words, you may want to
  2087.    review the material in section IV.
  2088.  
  2089. That said, the beauty of the "own" directory strategy is the fine control it
  2090. gives. In short, you can specify directories that will only be accessible by a
  2091. single user (or a small set of users).
  2092. In particular:
  2093.   i) You can specify one, or several, "own" upload directories.
  2094.  ii) You can specify one, or several, "own" download directories.
  2095.  
  2096. Specification of "own" upload and download directories is done by
  2097. adding entries to the user's .IN file. That is, for a username of JINX,
  2098. you would add entries to the JINX.IN file.
  2099.  
  2100. For uploads, these entries take the form:
  2101.    UPLOAD_DIR: prefix  fully-qualified-directory  weight_factor
  2102. Download entries take the form:
  2103.    DOWNLOAD_DIR: prefix  fully-qualified-directory privilege_list
  2104. where:
  2105.    prefix: the "leading sub-directory" of the requested-directory.
  2106.    fully-qualified-directory: where to read (or write) files from (to)
  2107.    weight_factor: (optional) weighting factor (default value is 1.0)
  2108.    privilege_list: (optional) list of privileges
  2109.  
  2110. Let's define the above in greater detail:
  2111.   requested-directory:
  2112.       the directory that appears after a dir=, or
  2113.       the directory portion of a file download (or upload) request.
  2114.       For example, if a client requests (ignoring username/password):
  2115.            bbs?dir=animals/primates
  2116.       the "requested-directory" is "animals/primates".
  2117.   prefix: the "first sub-directory" in the "requested-directory"
  2118.       Some examples:
  2119.         the prefix of "dir=animals/primates" is animals
  2120.         the prefix of "dir=simple"  is simple
  2121.         "dir=/" does NOT have a prefix.
  2122.   fully-qualified-directory:
  2123.         a (fully-qualified) directory used as the upload (or download)
  2124.         directory. It must already exist.
  2125.   weight_factor:
  2126.        usually BBS adds the actual number of bytes to the upload bytes-count.
  2127.        The weight_factor instructs BBS to multiply the byte-count by
  2128.        the "weight_factor".
  2129.        Thus, a weight_factor of 0.5, in conjunction with an upload of
  2130.        10000 bytes, would increase the upload-bytes-count by 5000.
  2131.        If this is not specified, a value of 1.0 is used.
  2132.   privilege_list:
  2133.         as with the privilege list in BBS.CTL, it's used to determine the
  2134.         appropriate "upload/download" ratio(s), and the "weighting factor".
  2135.         However, it is not used to control access (since these are "personal
  2136.         directories", it would be annoying and redundant to "require"
  2137.         privileges).
  2138.  
  2139. Examples:
  2140.  *  If INCOMING_DIR='D:\BBS\UPLOAD'
  2141.       and the username is JINX
  2142.       and JINX.IN contains an entry of: Upload_dir: myup d:\others\jinx
  2143.    then
  2144.       a BBS upload to myup\foo.1 will write results to
  2145.           d:\others\jinx\foo.1
  2146.      If there were no Upload_dir entry, results would be written to
  2147.          D:\BBS\UPLOAD\MYUP\FOO.1
  2148.  
  2149.  * If FILE_DIR='D:\BBSFILES'
  2150.       and the username is JINX
  2151.       and JINX.IN contains an entry of:
  2152.           Download_dir: personal d:\private\jinx
  2153.    then a request for dir=/personal
  2154.        would yield a listing of the files in d:\private\jinx
  2155.  
  2156.  *  If JINX.IN contained two entries:
  2157.       Download_dir: personal d:\private\jinx
  2158.       Download_dir: group1 d:\groups
  2159.    then a request for dir=group1/party
  2160.       would yield a list of the files in d:\groups\party
  2161.  
  2162. Notes:
  2163.  
  2164.   * You can have multiple download_dir and upload_dir entries -- just
  2165.     be sure you use a different prefix for each one (though you can use
  2166.     the same prefix for a download_dir and an upload_dir).
  2167.     Also note that sub-directories are always allowed (as in the
  2168.     third example) -- you should NOT use the * to signal "directories are
  2169.     okay" (contrast this to BBS.CTL).
  2170.  
  2171.  *  Please be aware that the "fully-qualified-directory" is used as an
  2172.     "alias" for the "prefix".  In contrast, BBS.CTL  assumes the
  2173.     entire "requested directory" is under the "alternate root directory".
  2174.     Example:
  2175.       Assume a request for dir=/newstuff/dir0
  2176.       a BBS.CTL entry of: newstuff/* * , g:\BBS2
  2177.          would yield a listing of: g:\bbs2\newstuff\dir0
  2178.       a USERS.IN entry of: DOWNLOAD_DIR: newstuff g:\bbs2
  2179.          would yield a listing of: g:\bbs2\dir0
  2180.  
  2181.   * The "own download directory" is checked before BBS.CTL -- if a
  2182.     matching "own download directory entry" is found, BBS.CTL will not be
  2183.     examined. Thus, in the above example, if both entries existed the latter
  2184.     (g:\bbs\dir0) would be used.
  2185.  
  2186.   * The DEFAULT prefix has a special meaning for both UPLOAD_DIR and
  2187.     DOWNLOAD_DIR.  DEFAULT signals that "this fully-qualified-directory
  2188.     should be used instead of the FILES_DIR (or the INCOMING_DIR)".
  2189.     It's a "user-specific" general replacement: if a requested-directory does
  2190.     NOT match a BBS.CTL entry or some other DOWNLOAD_DIR (or UPLOAD_DIR)
  2191.     entry, then the DEFAULT directory will be used.
  2192.      Example: download_dir: DEFAULT  d:\special\users\files
  2193.  
  2194.  
  2195. * Automatically creating "own" directories.
  2196.  
  2197.   You can always add, delete, and modify entries in the various .IN files.
  2198.   This can become tedious, so the new user registration offers a simple way
  2199.   to automatically create these entries.
  2200.  
  2201.   Three BBS.INI parameters are used by this automatic creation facilty:
  2202.   OWN_DOWNLOAD_DIR, OWN_UPLOAD_DIR, and OWN_FLAG. The first two should
  2203.   be fully qualified directories, or 0.  The last should be a short string.
  2204.  
  2205.   If  OWN_UPLOAD_DIR<>0, then the following entry is added to the user's .IN
  2206.   file:
  2207.       Upload_dir: OWN_FLAG Own_upload_dir\username
  2208.    For example,
  2209.               if:
  2210.                  OWN_UPLOAD_DIR='E:\STOREF', and E:\STOREF exists,
  2211.                  username is COYOTE
  2212.                  own_flag='PERSONAL'
  2213.               then the following entry is created,
  2214.                      Upload_dir: personal E:\STOREF\COYOTE
  2215.               and an upload from COYOTE to personal/ will be placed in
  2216.                  E:\STOREF\COYOTE
  2217.  
  2218.  
  2219.    Similarly, if OWN_DOWNLOAD_DIR<>0, then the following entry is added to the
  2220.    user's .IN  file:
  2221.       Download_dir: Own_flag Own_download_dir\username
  2222.       For example:
  2223.            if OWN_DOWNLOAD_DIR='E:\MYOWN' (and E:\MYOWN exists),
  2224.                     and the username is COYOTE
  2225.                     and OWN_FLAG='PERSONAL'
  2226.            then the following entry is created,
  2227.                      Download_dir: PERSONAL  E:\MYOWN\COYOTE
  2228.            * a request (from COYOTE) for dir=personal will yield a listing of
  2229.              E:\MYOWN\COYOTE
  2230.            * a request for dir=personal/kids will yield a listing of
  2231.              E:\MYOWN\COYOTE\KIDS
  2232.  
  2233.  
  2234.   Notes:
  2235.    * In both of these examples, note that use of OWN_FLAG.  By default, it
  2236.      equals PERSONAL, but you can change it to suit your tastes.
  2237.  
  2238.    * If the "own_upload_dir\username" directory, or the
  2239.      "own_download_dir\username" directories to not exist, they will be
  2240.      created.
  2241.  
  2242.   *  These three parameters (OWN_DOWNLOAD_DIR, OWN_UPLOAD_DIR, and
  2243.      OWN_FLAG) are only used in "new user registrations". If you prefer,
  2244.      you can always hand-enter entries into the various .IN files -- in which
  2245.      case you can freely assign directory names (and "requested directory
  2246.      prefixes").
  2247.  
  2248.  
  2249. -- End of BBS documentation.
  2250.